在一個持久對象中,如果我只改變一個字段,是否有可能通過Hibernate找出已改變的字段? 我知道我可以得到整個舊行和新行並進行比較。有沒有辦法只使用Hibernate從對象中獲取已更改的列?
3
A
回答
5
一個選項是掛鉤Hibernate的事件系統(請參閱docs)。例如,如果您註冊接收FlushEntityEvent
,則會通過getDirtyProperties
方法通知您哪些列正在更改。
7
根據您的評論之一,我的理解是您正在尋找一個審計解決方案,所以我建議您檢查Envers,這正是關於這一點的。
Envers項目旨在實現持久化類的簡單審覈/版本控制。你所要做的就是用@Audited註釋你想要審計的持久類或它的一些屬性。對於每個審計實體,將創建一個表格,該表格將保存對實體所做更改的歷史記錄。然後您可以毫不費力地檢索和查詢歷史數據。
+0
是的,我正在尋找一個審計解決方案。但是,envers告訴天氣審計領域已經改變或沒有改變,而不是哪個領域改變。還需要單獨的表來存儲審計數據。 – 2010-03-30 06:26:42
相關問題
- 1. 有沒有辦法從列表中使用一個對象,只要它存在?
- 2. 有沒有辦法直接從simplexmlelement對象獲取數據?
- 3. 有沒有辦法用CodeIgniter獲取當前對象和方法?
- 4. 有沒有辦法從Web UI中提取bitbucket中的更改?
- 5. 有沒有辦法從R中的對象列表中拉取值列表?
- 6. 有沒有辦法在Silverlight MediaElement對象中獲取幀號?
- 7. 有沒有辦法在vim中獲取整數對象運動?
- 8. 有沒有辦法監視對象的更改?
- 9. 有沒有辦法使用json.net序列化嵌入的對象
- 10. 有沒有辦法自動獲取對象分配的ID?
- 11. PHP:有沒有辦法打印所有已創建的對象?
- 12. 有沒有辦法從M2M關係中獲取* only *相關對象的PK?
- 13. 有沒有辦法從對話框中獲取IShellBrowser?
- 14. 有沒有辦法使用Fog和CarrierWave讀取文件對象?
- 15. 有沒有辦法使用PropertyPath類獲取對象的屬性值?
- 16. 有沒有辦法在客戶端獲得Tenant對象列表?
- 17. 有沒有辦法從sqlite3對象中獲取數據庫位置?
- 18. 有沒有辦法從靜態上下文中獲取Session對象?
- 19. 有沒有辦法只使用ASP.Net中的對象來構建一個網頁?
- 20. jquery「對象沒有辦法」
- 21. 有沒有辦法使用hiveContext獲取列名?
- 22. Spring&Hibernate - 獲取persisteed對象狀態已更改
- 23. 有沒有辦法指出DateTime對象只有Date值?
- 24. 有沒有辦法使用TFS2010,但從TFS2008獲取代碼?
- 25. JENKINS - 有沒有辦法只能更新修改的文件?
- 26. 有沒有辦法跟蹤對github中文件夾的更改?
- 27. 有沒有辦法在Laravel 5.2中更改api_token列的位置?
- 28. 有沒有辦法使用Java從對象內部銷燬對象?
- 29. Javascript中只有從JSON對象中獲取值的方法嗎?
- 30. 有沒有辦法在python中修改datetime對象?
您想在哪一點更改行?保存之後,保存之後,過一會兒? – Bozho 2010-03-26 07:01:54
@Bozho保存之前,我可以記錄哪一列更新。 – 2010-03-26 07:31:17