使用 Javers 3.0.2,我需要比较作为对象中嵌套字段的复杂对象的集合,有时它甚至可以是另一个元素列表中的元素列表,依此类推。我正在使用 Levenshtein 列表比较,它要求列表的对象具有定义为 Id 的字段。我可以为所需对象定义 Id 字段,但这种方法的问题是我无法理解层次图中更改对象的完整路径。因此,理想情况下,我希望具有与实体相同的行为,但要以与 ValueObjects 相同的方式生成 Id。
所以,我试图描述的情况如下
class A {
@Id
private String field0;
private List<B> bList;
}
class B {
@Id
private String field1;
private String field2;
private List<C> cList;
}
class C {
@Id
private String field3;
private String field4;
}
而且我需要比较 A 类的 2 个对象。我知道要使用 Levensteing 算法对集合进行充分比较,我需要在 B 和 C 类上添加 @Id 注释。但是在这种情况下,我收到了更改,例如 C@field3#field4 但我不能说更改的 C 对象属于哪个 B 对象,因此我无法有效地构建更改对象的层次结构,例如 A->bList[1]->cList[2 ]
在 ValueObjects 的情况下,我有完整的更改路径,但不可能将 ValueObjects 用作集合的元素。