使用Hibernate(4.1.7.Final)我想只在实体的给定属性更新时做某些事情,所以我实现了PostUpdateEvent并且我想检查:
@Override
public void onPostUpdate(PostUpdateEvent event) {
int[] dirtyProperties = event.getDirtyProperties();
...
但是这是null,与event.getOldState()相同; 该对象存在于db中,事务在之前提交,会话被刷新。
无论如何,如果onUpdate被触发,那么肯定有一些旧的对象 - 这些空值怎么可能?
答案 0 :(得分:1)
确保首先将实体加载到会话中。我遇到了同样的问题。在我添加代码以在对实体进行更新之前将实体加载到会话中之后,它对我有用。 例如,
session.load(Entity.class, entity.getId());
答案 1 :(得分:0)
您的版本是否可能包含此处描述的错误:https://hibernate.atlassian.net/browse/HHH-7543 ?