Можно ли с помощью javers игнорировать изменение последовательности Java объектов? - PullRequest
0 голосов
/ 05 марта 2020

Я вложил Java объектов. Json этого (например) выглядит следующим образом: Первый объект Json:

{
  ClassId : 1,
  OfficeLocation: “UK”,
  “Employees”: [{
     ClassId: 2,
     FirstName: “Bob”,
     LastName: “Smith”
   },
   {
     ClassId: 3,
     FirstName: “Tim”,
     LastName: “Timothy”
   }]
}

Второй объект json:

{
  ClassId : 1,
  OfficeLocation: “UK”,
  “Employees”: [{
     ClassId: 3,
     FirstName: “Tim”,
     LastName: “Timothy”
   },
   {
     ClassId: 2,
     FirstName: “Bob”,
     LastName: “Smith”
   }]
}

Я хочу игнорировать изменение если это просто изменение последовательности, как указано выше. Но в настоящее время Javers дает мне Diff результат как valueAdded и ValueRemoved. Я использую Javers 3.1.0. Есть ли способ сделать это?

В своем классе сущностей я добавил аннотацию @Id в ClassId. Но все еще не в состоянии достичь ожидаемых результатов. Любая помощь будет оценена.

1 Ответ

1 голос
/ 08 марта 2020

Существует два решения.

Первое (рекомендуется) - используйте правильный тип сбора. Список - это упорядоченная коллекция, используйте Set, если вас не интересует порядок.

Второе решение. Если вы не можете изменить списки на наборы, используйте ListCompareAlgorithm.AS_SET и сохраните ваши данные в списках.

javersBuilder.withListCompareAlgorithm(ListCompareAlgorithm.AS_SET)

Если выбран AS_SET, Javers сравнивает списки как наборы (все элементы из списков копируются в наборы до сравнение).

...