在一个持久对象中,如果我只改变一个字段,是否有可能通过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