Using Javers 3.0.2, Ich muss Sammlungen von komplexen Objekten verschachtelte Felder in einem Objekt zu vergleichen, manchmal kann es sogar Liste von Elementen innerhalb einer anderen Liste von Elementen und so weiter. Ich verwende Levenshtein Listenvergleich, und es erfordert Objekt der Liste, Feld als Id definiert zu haben. Ich bin in Ordnung, Id-Feld für erforderliche Objekte zu definieren, aber Problem eines solchen Ansatzes ist, dass ich den vollständigen Pfad des geänderten Objekts im Hierarchiediagramm nicht verstehen kann. Im Idealfall möchte ich das gleiche Verhalten wie für Entitäten haben, aber Id muss genauso generiert werden wie für ValueObjects. Irgendwelche Ideen, wie dieses Problem zu lösen, sind sehrJavers Sammlung Vergleich mit Details über Eltern
geschätztAntwort
So Fall, dass ich zu beschreiben, ich versuche folgt
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;
}
Und ich brauche 2 Objekte der Klasse A. zu vergleichen, das verstehe ich haben adäquater Vergleich der Sammlungen mit dem Levensteing-Algorithmus Ich muss eine @Id-Annotation für B- und C-Klassen durchführen. Aber in diesem Fall habe ich zum Beispiel Änderungen wie C @ field3 # field4 erhalten, aber ich kann nicht sagen, zu welchem B-Objekt C-Objekt gehört. Daher kann ich keine Hierarchie von geänderten Objekten wie A-> bList [1] -> cList erstellen. 2]
Bei valueobjects ich habe vollständigen Pfad von Änderungen, aber es ist nicht möglich, valueobjects als Elemente von Sammlungen
Sie sollten verwendet A auch als Entity zuordnen. Gib es eine ID.
Also, ich dieses Beispiel geändert haben, aber tatsächlich Ergebnis ist das gleiche - Wenn Benutzer cList-Feld (zum Beispiel) ändert, in einem solchen Ansatz kann ich nicht Pfad von cList-Objekt finden -> B -> A – Denis
Sie einen Pfad von ValueObjectId.getFragment()
extrahieren kann
class A {
@Id
private String id;
private List<B> bList;
}
class B {
private String field1;
private String field2;
private List<C> cList;
}
class C {
private String field3;
private String field4;
}
def "should "(){
given:
def a = new A(id:1, bList: [new B(cList: [new C(field3: 'a')])])
def b = new A(id:1, bList: [new B(cList: [new C(field3: 'b')])])
when:
def javers = JaversBuilder.javers().build()
def diff = javers.compare(a, b)
println diff.prettyPrint()
then:
true
}
Ausgang:
Diff:
1. ValueChange{globalId:'org.javers.core.cases.StackCase$A/1#bList/0/cList/0', property:'field3', oldVal:'a', newVal:'b'}
Ja, ich habe diesen Ansatz zunächst versucht. Der Sammlungsvergleich erzeugt in diesem Fall jedoch zu viele Change-Objekte. Er kann Elemente der Collection nicht effektiv vergleichen, wenn deren Indizes geändert wurden. Deshalb habe ich angefangen, die Verwendung von Id und Entitäten zu testen, und so kam ich mit dieser Frage – Denis
- 1. Javers mit mehreren EntityManagerFactory
- 2. JAVERS Listen vergleichen
- 3. Gibt es Javers-Benchmarks?
- 4. Wie zu vergleichen Hibernate BO-Objekte mit Javers
- 5. Java Kollektionen: Pass Sammlung von Kindern als Sammlung von Eltern
- 6. Javers, läuft im Hintergrund (geschlossen)
- 7. HowTo Karte Javers Snapshot Einheit über JPA Annotationen/Konverter
- 8. Jede Zeile über Eltern mit Eltern/Kinder zusammenführen?
- 9. Center JDialog über Eltern
- 10. über chrome.tabs.executeScript (ID, Details, Callback)
- 11. Details über/proc/$ pid/attr?
- 12. Eltern Eltern Kind Daten über sql
- 13. Javers und MyBatis Integrationshilfe benötigt
- 14. Unterschall - Sammlung Last im Vergleich zu Abfrage
- 15. Javers: Ignoriere bestimmte Felder in Value Object beim Vergleich von zwei Jsons
- 16. Iterieren über synchronisierte Sammlung
- 17. vba - iterieren über Sammlung
- 18. Vergleichen Sie Sammlung mit Mock-Sammlung
- 19. Javers Audit eine benutzerdefinierte löschen
- 20. javers beschwert sich, wenn ein Feld als Sammlung deklariert, aber als konkreter Typ initialisiert wird
- 21. Get wifi Details über den Browser
- 22. Xaml Auslöser Eltern über eine bestimmte Eigenschaft eines Kindes in Sammlung
- 23. Flex Uploader und Details über flex
- 24. Erfordern Details über Randknoten im Cluster
- 25. Gruppe anzeigen Über Details der Abfrage
- 26. Javers: vorherige Version von Bean wiederherstellen
- 27. Wie finden Sie Details über installierte odp.net mit der Registrierung?
- 28. Wie bekomme ich Details über die ausgewählten Artikel mit QTreeView?
- 29. Iterieren über eine Sammlung (VBA)
- 30. Kann ein Commit in Javers zurückgesetzt werden?
Bitte klären Sie hinterfragen, setzen einige Beispiel –