休眠:检查修改了哪个实体的字段
我有什么:
我有Hibernate实体,它包含许多非瞬态字段,包括集合。用户可以单独更新每个字段或一次更新一组字段。
这是一个多么大的挑战:
在处理程序中,我应该检查实体的哪个字段已更改:
public void handle(Entity newVersion) {
Session session = sessionFactory.openSession();
Entity oldVersion = (Entity) session.get(Entity.class, entity.getId());
List changedFields = compareChanges(oldVersion, newVersion); //HOW TO CHECK WHICH FIELDS ARE CHANGED?
}
出于安全和通知原因,我想这样做。方法:
- 并非所有用户都可以修改所有字段
- 我应该以特定方式通知特定用户某些字段更改。
什么问题:
我得到非常丑陋的代码。实际上,我遍历了所有字段/集合和调用方法。equals
问题:
也许Hibernate提供了更优雅的方式来检查哪些字段已被修改?如何?
附言
@victorantunes提供了一个解决方案,但对我来说似乎太全面了。可能是一些替代方案?