Javers не дает правильных изменений аудита, когда мы отслеживаем вложенные объекты - PullRequest
0 голосов
/ 21 февраля 2020

Я отслеживал вложенные объекты с помощью Javers, и объекты хранятся в таблицах Javers примерно так:

{
  "userInfo": "test1@gmail.com",
  "site": {
    "valueObject": "test.dto.AuditDeviceDto",
    "ownerId": {
      "entity": "test.db.Site",
      "cdoId": 1
    },
    "fragment": "site"
  },
  "siteCode": "mysite",
  "id": 1
}

Вложенные объекты

{
  "deviceClass": "bus",
  "deviceCode": "bus1",
  "driverInstance": {
    "valueObject": "test.dto.ModuleInstanceDto",
    "ownerId": {
      "entity": "test.db.Site",
      "cdoId": 1
    },
    "fragment": "site/nodes/0/devices/1/driverInstance"
  },
  "powerPorts": [
    {
      "valueObject": "test.dto.PowerPortDto",
      "ownerId": {
        "entity": "test.db.Site",
        "cdoId": 1
      },
      "fragment": "site/nodes/0/devices/1/powerPorts/0"
    },
    {
      "valueObject": "test.dto.PowerPortDto",
      "ownerId": {
        "entity": "test.db.Site",
        "cdoId": 1
      },
      "fragment": "site/nodes/0/devices/1/powerPorts/1"
    },
    {
      "valueObject": "test.dto.PowerPortDto",
      "ownerId": {
        "entity": "test.db.Site",
        "cdoId": 1
      },
      "fragment": "site/nodes/0/devices/1/powerPorts/2"
    }
  ]
}

Извлечение изменений аудита с помощью запроса ниже:

javers.findChanges(QueryBuilder.byClass(Site::class.java)
                    .withChildValueObjects()
                    .withCommitProperty("siteCode", site.siteCode)
                    .from(from).to(to)
                    .build())

Отслеживание начальных записей путем добавления вложенного объекта в объект списка устройств, а затем добавления нового объекта в тот же список, но Javers сравнивает с ранее добавленным вложенным объектом и дает неправильные результаты, когда я выполняю запрос с использованием вышеуказанного запроса.

Он должен отображаться отдельно как вновь добавленные изменения и не должен сравниваться с другими вложенными объектами, в противном случае отображаются несопоставленные поля removed

Как лучше справиться с этой проблемой? Не могли бы вы помочь мне в этом

...