2013-01-02 29 views
13

Ho una struttura di DB piuttosto complessa che sto cercando di verificare. Attualmente ho Envers in esecuzione e controlla le modifiche apportate a ciascun oggetto. Funziona davvero bene!Hibernate Envers - Ottieni campi che sono stati modificati

Ora voglio mostrare alcune informazioni di controllo sull'interfaccia utente. Gli oggetti/le tabelle diventano piuttosto complicati quindi stavo cercando un modo per vedere quali campi sono stati modificati nella verifica. Attualmente Envers memorizza un'istantanea di ogni oggetto timbrato con un id di revisione. Posso esaminare la revisione di ogni oggetto e quindi interrogare manualmente per vedere cosa è cambiato, ma mi chiedevo se c'era un modo per ottenere Envers per memorizzare quali campi sono stati modificati. È possibile? Ho trovato il collegamento this dal 2011 e si consiglia di verificare manualmente ogni campo oggetto. La mia preoccupazione qui è la velocità. Ho molti oggetti correlati e potrei avere solo un campo aggiornato. Dovrò interrogare un sacco di campi per trovare quello che è cambiato.

E 'possibile memorizzare i campi che sono stati modificati?

Grazie

EDIT

avrei dovuto dire che sto usando la tabella REVCHANGES in modo da poter vedere cosa è cambiato a ciò che le revisioni ma anche questo è solo a livello di entità non livello di campo

+1

+1 per questo - Al momento stiamo utilizzando il vecchio ascoltatore onPostUpdate per fare un diff e registrare il diff in una tabella in cui sono effettuati gli aggiornamenti. Idealmente l'interrogazione Envers ci diceva: 1. Che cosa è cambiato e per un credito extra: 2. Che cosa è cambiato da e per – ndtreviv

risposta

9

Nelle versioni di Envers più recenti è possibile tenere traccia delle proprietà modificate ad ogni revisione utilizzando un flag booleano. Vedere:

http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-tracking-properties-changes

+4

Il problema con questo è che, per quanto posso dire, non c'è modo di controllare a livello di codice questa informazione. Puoi usarlo solo nelle query di controllo. Ciò aiuta a limitare le revisioni apportate, ma non aiuta affatto a visualizzare in modo accurato un registro di ciò che è accaduto. Se ho ben capito il manifesto originale a destra, e per il mio problema, ho bisogno di un modo per accedere a queste bandiere dopo le revisioni vengono caricati in modo da poter mostrare in modo sano l'utente cosa è cambiato. Altrimenti il ​​log è inutile perché ci vuole molto per capire cosa è cambiato. – user3402489