Hibernate PostUpdateEvent null旧状态

时间:2014-11-03 15:41:47

标签: java hibernate

使用Hibernate(4.1.7.Final)我想只在实体的给定属性更新时做某些事情,所以我实现了PostUpdateEvent并且我想检查:

@Override
public void onPostUpdate(PostUpdateEvent event) {
   int[] dirtyProperties = event.getDirtyProperties();
   ...

但是这是null,与event.getOldState()相同; 该对象存在于db中,事务在之前提交,会话被刷新。

无论如何,如果onUpdate被触发,那么肯定有一些旧的对象 - 这些空值怎么可能?

2 个答案:

答案 0 :(得分:1)

确保首先将实体加载到会话中。我遇到了同样的问题。在我添加代码以在对实体进行更新之前将实体加载到会话中之后,它对我有用。 例如,

session.load(Entity.class, entity.getId());

答案 1 :(得分:0)

您的版本是否可能包含此处描述的错误:https://hibernate.atlassian.net/browse/HHH-7543