javers 是否可以忽略 Java 对象的序列变化?

Is it possible with javers to ignore sequence change of Java objects?

我嵌套了 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。有办法吗?

在我的实体 class 中,我向 ClassId 添加了 @Id 注释。但是还是没能达到预期的效果。任何帮助,将不胜感激。

有两种解决方案。

第一个(推荐)- 使用正确的集合类型。 List是一个有序的集合,如果你不在乎顺序,就用Set。

第二种解决方案。如果您无法将列表更改为集合,请使用 ListCompareAlgorithm.AS_SET 并将数据保存在列表中。

javersBuilder.withListCompareAlgorithm(ListCompareAlgorithm.AS_SET)

如果选择AS_SET,Javers 会像比较集合一样比较列表(在比较之前,列表中的所有元素都被复制到集合中)。