2013-02-12 7 views
5

Sto utilizzando Hibernate Envers per controllare le mie entità e proprietà (org.hibernate.envers.global_with_modified_flag=true). Questo sembra funzionare, ma ora mi piacerebbe ottenere tutte le proprietà di un'entità specifica che è cambiata a una data revisione, rispetto alla precedente. Come bonus, sarebbe bello avere il changeset da una revisione a un'altra. Finora, ho solo le entità modificati:Come ottenere le proprietà modificate mediante la revisione

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

Ora, dal momento che non voglio creare metodi di confronto per tutte le entità in Java, esiste un modo per ottenere le proprietà modificate di questa revisione? Qualcosa sulla falsariga di

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

sarebbe bello avere - ma forse io sono troppo stupido per trovare quel tipo di funzione.

risposta

3

Attualmente è possibile eseguire query solo per le entità in cui è stata modificata una proprietà, vedere http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-envers-tracking-properties-changes-queries.

Ottenere un descrittore (set di modifiche) di cui le proprietà modificate non è ancora possibile.

+1

Grazie, avevo visto quell'opzione di interrogazione, non ero sicuro che l'elenco delle proprietà modificate non fosse semplicemente menzionato nella documentazione o se effettivamente mancasse. Ora so che è il secondo ;-) Come soluzione alternativa, recupero la vecchia versione e la nuova versione e uso 'BeanUtils' e' PropertyUtils' per iterare su tutte le proprietà e confrontare i loro valori. Non è bello, ma funziona per ora. :-) –

Problemi correlati