2017-12-05 3 views
0

Ich habe ein Objekt wie:Wie man Javers vergleichen Feldwerte anstatt ID/Objektreferenz

class Person { 
    Phone phone; 
} 

class Phone { 
    String number; 
    String prefix; 
    Phone(String n, String p) { 
     number = n; 
     prefix = p; 
    } 
} 

Now consider this code: 

Person p = new Person(); 
p.phone = new Phone("444444", "01"); 
javers.commit(p); 
p.phone = new Phone("555555", "01"); 
javers.commit(p); 

In diesem Fall sieht, dass der Bezug von Phone verändert hat. Obwohl das eine gute Information ist, interessiert mich das nicht wirklich. Ich möchte nur wissen, wann sich der Wert des Feldes number geändert hat, das ist es, was ich verfolgt habe.

Wie würde ich das erreichen? Ich habe versucht, die Phone-Klasse als ValueObject zu definieren, aber es scheint nicht die Aufgabe zu erledigen, ich bekomme es immer noch als Referenzänderung und nicht als Wertänderung in dem resultierenden Commit Snapshot. Soll ich es stattdessen als Value registrieren?

Antwort

0

Karte Telefon als ValueObject oder lassen JaVers Standard Mapping anwenden, die auch ValueObject-Objekt ist. ValueObject werden immer Eigenschaft für Eigenschaft und nie durch Referenz verglichen. Was meinst du damit, scheint die Arbeit nicht zu machen?