Using Javers 3.0.2, I need to compare collections of complex objects being nested fields in a object, sometimes it can be even list of elements inside of another list of elements and so on. I'm using Levenshtein list comparision, and it requires object of the list to have field defined as Id. I'm ok to define Id field for required objects, but problem of such approach is that I cannot understand full path of changed object in hierarchy graph. So ideally I would like to have the same behavior as for Entities, but to have Id generated the same way as for ValueObjects.
So, case that I'm trying to describe is following
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;
}
And I need to compare 2 objects of class A. I understand that to have adequate comparision of collections using Levensteing algorithm I need to hava @Id annotation on B and C classes. However in this case I received changes for example like C@field3#field4 but I cannot say to which B object changed C object belongs, so I cannot effectively build hierarchy of changed objects like A->bList[1]->cList[2]
In case of ValueObjects I have full path of changes, but It's not possible to use ValueObjects as elements of collections.