2015-01-26 136 views
5

我已经实现了Hibernate事件的事件前/事件侦听器,但我还没有能够克服一个警告。我有一个Departments实体,它与一个Centers实体有多对多的关系。当分配一个新的中心一处,我简单地调用:当关系发生变化时触发休眠(事前/事后)更新事件

oDepartment.addCenter(oCenter); 
entitySave(oDepartment); 

发生这种情况时,我希望Hibernate来,因为我修改了实体触发更新前和postUpdate事件。但是,除非列属性也更新,否则它不会被触发。只更新关系属性似乎不会触发更新事件。

翻阅当前的Hibernate会话,我似乎无法找到任何可以让我设置某种标志来触发这些事件触发的东西。

想法,我可以让这些事件发生?

回答

3

当集合发生更改时,Hibernate不会触发pre/postUpdate事件。 相反,它会触发

  • preCollectionUpdate/preCollectionRemove/preCollectionRecreate
  • postCollectionUpdate/postCollectionRemove/postCollectionRecreate。

这是一个已知和老的错误,你可以检查HHH-2616here

您可以实现这些侦听器,或者作为解决方法,您可以强制postUpdate被调用以更改该实体上的另一个字段。

相关问题