Im folgenden Code werden einfach zwei Objekte mit zwei Listen mit demselben Objekt erstellt, das mit id gekennzeichnet ist. Nur der Inhalt des Elements wird geändert. Das diff-Objekt erzeugt ein diff ohne Bezug auf das Element übergeordneten Liste, sondern auf die tatsächliche ropZugriff auf Referenz der Liste nicht möglich, wenn sich das enthaltene Element ändert
public class JaversTest {
public static void main(String[] args) {
User u1 = new User();
User u2 = new User();
Email e1 = new Email();
e1.setId("id1");
e1.setMail("[email protected]");
Email e2 = new Email();
e2.setId("id1");
e2.setMail("[email protected]");
u1.setEmails(Collections.singletonList(e1));
u2.setEmails(Collections.singletonList(e2));
Javers javers = JaversBuilder.javers().build();
Diff diff = javers.compare(e1, e2);
System.out.println(diff.prettyPrint());
}
@Data
public static class User {
List<Email> emails = new ArrayList<>();
}
@Data
public static class Email {
@Id
String id;
String mail;
}
}
Der Ausgang i erhalten ist
1. ValueChange{globalId:'com.practo.test.api.diff.JaversTest$Email/id1', property:'mail', oldVal:'[email protected]', newVal:'[email protected]'}
Es ist eine Entität in meinem Fall, da es auch eine eindeutige ID haben wird. Auch bezüglich der Anforderung wollte ich nur den Link zurück zum tatsächlichen Link von der Wertänderung wissen. –