2013-01-02 60 views
13

我有一個相當複雜的數據庫結構,我試圖審計。目前我有Envers正在運行,它審覈對每個對象所做的更改。這真的很好!Hibernate Envers - 獲取已更改的字段

我現在想在UI上顯示一些審計信息。對象/表格變得非常複雜,所以我正在尋找一種方法來查看審覈中哪些字段發生了變化。目前,Envers存儲每個標有修訂ID的對象的快照。我可以查看每個對象的修訂版,然後手動查詢以查看發生了什麼變化,但我想知道是否有一種方法可以讓Envers來存儲哪些字段已更改。這可能嗎?我發現2011年的this鏈接,它建議手動檢查每個對象字段。我關心的是速度。我有很多相關的對象,我可能只有一個更新的字段。我將不得不查詢很多領域以找到已經改變的領域。

是否可以存儲已更改的字段?

感謝

編輯

我應該說我現在用的是REVCHANGES表,所以我可以看看發生了什麼,在什麼版本中被修改,但這又是隻在實體層面沒有現場級

+1

+1此 - 我們目前正在使用舊onPostUpdate聽衆做一個diff和記錄中DIFF表時更新制成。理想情況下,Envers查詢會告訴我們:1.什麼改變了額外的信用:2.它改變了什麼,並改變爲 – ndtreviv

回答

9

在較新的Envers版本中,您可以使用布爾標誌跟蹤每個修訂版更改哪些屬性。請參閱:

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

+4

問題在於,據我所知,沒有辦法通過編程方式檢查這些信息。您只能在審計查詢中使用它。這有助於限制您所帶來的修改,但對所有發生的事情都沒有任何幫助。 如果我理解原來的海報權利,併爲我自己的問題,我需要一種方式來訪問這些標誌後,修訂加載,所以我可以清楚地向用戶顯示改變了什麼。否則,日誌是無用的,因爲它需要很長的時間來弄清楚改變了什麼。 – user3402489