在持久对象中,如果我只更改一个字段,是否可以仅通过Hibernate查找更改的字段? 我知道我可以得到整个旧行和新行并进行比较。
答案 0 :(得分:7)
根据您的一条评论,我的理解是您正在寻找一个审核解决方案,因此我建议您查看Envers哪个正是如此。
Envers项目旨在实现对持久化类的轻松审计/版本控制。您需要做的就是使用@Audited注释要审核的持久类或其某些属性。对于每个经审计的实体,将创建一个表,该表将保存对实体所做更改的历史记录。然后,您可以毫不费力地检索和查询历史数据。
答案 1 :(得分:5)
一种选择是挂钩Hibernate的事件系统(参见docs)。例如,如果您注册接收FlushEntityEvent
,则会通过事件的getDirtyProperties
方法通知您哪些列正在更改。