У меня есть два Java-класса, например:
public class FooA {
private List<FooB> fooB;
}
public class FooB {
private Integer id;
private String name;
private double num;
}
Я хочу сравнить FooA, и он скажет мне, какие поля внутри объекта списка изменились. Но когда я делаю это:
FooA old = new FooA(Arrays.asList(new FooB(1, "old", 1.0)));
FooA new = new FooA(Arrays.asList(new FooB(1, "new", 1.0)));
Javers javers = JaversBuilder.javers()
.withListCompareAlgorithm(LEVENSHTEIN_DISTANCE)
.build();
javers.compare(old, new);
Это дает мне разницу:
Diff:
* new object: com.FooA/#fooB/1d32d18fcb3ba2f7f7cb41af6cd96b32
* object removed: com.FooA/#fooB/223ef3c3249fe2898ac3354f9bf42620
* changes on com.FooA/ :
- 'fooB' collection changes :
. 'com.FooA/#fooB/223ef3c3249fe2898ac3354f9bf42620' removed
. 'com.FooA/#fooB/1d32d18fcb3ba2f7f7cb41af6cd96b32' added
Я даже пытался добавить Id на FooB, как я читал во многих постах. Так что теперь мой foob выглядит так:
public class FooB {
@Id
private Integer id;
private String name;
private double num;
}
Но теперь, когда я сравниваю, я получаю это:
Diff:
* changes on com.FooB/1 :
- 'name' changed from 'old' to 'new'
Он регистрируется как изменение значения, а не как изменение коллекции. Я хочу, чтобы diff читалось так:
Diff:
* changes on com.FooA/#fooB/1 :
- 'fooB' collection changes :
. 'name' changed from 'old' to 'new'
Что я делаю не так?