有没有办法只使用Hibernate从对象中获取更改的列?

时间:2010-03-26 07:00:07

标签: java hibernate orm

在持久对象中,如果我只更改一个字段,是否可以仅通过Hibernate查找更改的字段? 我知道我可以得到整个旧行和新行并进行比较。

2 个答案:

答案 0 :(得分:7)

根据您的一条评论,我的理解是您正在寻找一个审核解决方案,因此我建议您查看Envers哪个正是如此。

  

Envers项目旨在实现对持久化类的轻松审计/版本控制。您需要做的就是使用@Audited注释要审核的持久类或其某些属性。对于每个经审计的实体,将创建一个表,该表将保存对实体所做更改的历史记录。然后,您可以毫不费力地检索和查询历史数据。

答案 1 :(得分:5)

一种选择是挂钩Hibernate的事件系统(参见docs)。例如,如果您注册接收FlushEntityEvent,则会通过事件的getDirtyProperties方法通知您哪些列正在更改。