2013-02-12 16 views
5

Ich verwende Hibernate Envers, um meine Entitäten und Eigenschaften zu überprüfen (org.hibernate.envers.global_with_modified_flag=true). Dies scheint zu funktionieren, aber jetzt möchte ich alle Eigenschaften einer bestimmten Entität erhalten, die sich bei einer bestimmten Revision im Vergleich zu der vorherigen geändert hat. Als Bonus wäre es schön, den Changeset von einer Revision in eine andere zu bekommen. Bisher bekomme ich nur die geänderten Einheiten:Abrufen geänderter Eigenschaften durch Revision

List<Object> modifiedClassesAtRevision = getAuditReader().getCrossTypeRevisionChangesReader().findEntities(revision, RevisionType.MOD) 
Object modifiedObject = modifiedClassesAtRevision.get(0); 

Nun, da ich nicht will Vergleichsmethoden für alle Unternehmen in Java erstellen, ist es eine Möglichkeit, die veränderten Eigenschaften dieser Revision zu bekommen? Etwas nach dem Vorbild von

List<String> modifiedProperties = getAuditReader().getModifiedProperties(modifiedObject, revision); 

wäre schön zu haben - aber vielleicht bin ich einfach zu blöd, diese Art von Funktion zu finden.

Antwort

3

Derzeit ist es nur möglich, Entitäten abzufragen, bei denen eine Eigenschaft geändert wurde, siehe http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-envers-tracking-properties-changes-queries.

Das Abrufen eines Deskriptors (Changeset), dessen Eigenschaften sich geändert haben, ist noch nicht möglich.

+1

Danke, ich hatte diese Abfrage Option gesehen, nur war nicht sicher, ob die Auflistung der geänderten Eigenschaften nur nicht in der Dokumentation erwähnt wurde oder wenn es tatsächlich fehlt. Jetzt weiß ich, dass es letzteres ist ;-) Als Workaround hole ich die alte Version und die neue Version und benutze 'BeanUtils' und' PropertyUtils', um alle Eigenschaften zu iterieren und ihre Werte zu vergleichen. Nicht nett, aber es funktioniert für jetzt. :-) –

Verwandte Themen