Я отслеживал вложенные объекты с помощью 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
Как лучше справиться с этой проблемой? Не могли бы вы помочь мне в этом