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

Vai*_*esh 3 java orm hibernate

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

Pas*_*ent 7

根据你的一条评论,我的理解是你正在寻找一个审计解决方案,所以我建议检查Envers,这正是这个问题.

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


ska*_*man 5

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