2014-02-24 62 views
1

我想創建一個簡單的更改日誌,用於插入,刪除和更改我的表。MergeEventListener中的休眠原始狀態

我使用hibernate的HibernateEventListener類以及SaveOrUpdateEventListener和DeleteEventListener。

這對保存和刪除非常有用。我想顯示新舊狀態的變化。所以我遵循相同的模式並創建了一個MergeEventListener。

我的問題是原始值始終爲空。我嘗試了一個PreUpdateListener並得到了相同的結果。

根據hibernate文檔,原始對象將被分離爲null的對象。

  1. 打開一個會話中獲取對象
  2. 將對象變成一種形式支持bean
  3. 顯示的形式提供給用戶:

    我的目標總是會根據當前的架構是分離

  4. 在保存或更新點擊
  5. 打開新的會話和更新對象

我想知道是否有任何方法可以獲得對象的預更新狀態。在合併或preupdate事件發生之前,我的分離對象在控制器中更新。

任何想法或提示,將不勝感激。

謝謝

回答

0

我能解決使用PreUpdateEventListener這個問題。

我看着我的Hibernate Dao對象,特別是更新調用。我正在使用更新,這將被分離,並在oldState屬性中有null。

我將調用切換到合併,現在始終填充oldState屬性。

0

如果您的數據庫支持觸發器,那麼這可以在觸發器中實現。

如果發生觸發,會話沒有問題 - 您可以隨時更新OLD和NEW值。

維基百科條目提供有關解決方案的更多細節:http://en.wikipedia.org/wiki/Log_trigger