我已经实现了Hibernate事件的前/后事件监听器,但有一点我无法克服。我有一个Departments
实体,它与Centers
实体之间存在多对多关系。将新中心分配给部门时,我只需调用:
oDepartment.addCenter(oCenter);
entitySave(oDepartment);
当发生这种情况时,我希望Hibernate会在我修改实体后触发preUpdate和postUpdate事件。但是,除非列属性也更新,否则它永远不会被触发。仅更新关系属性似乎不会触发更新事件。
通过当前的Hibernate会话,我似乎找不到任何可以让我设置某种触发这些事件的标志。
关于如何解决这些事件的想法?
答案 0 :(得分:3)
当更改集合时,Hibernate不会触发pre / postUpdate事件。 相反它会触发
这是一个已知的旧错误,您可以查看HHH-2616和here。
要么实现这些侦听器,要么作为变通方法,可以强制调用postUpdate来更改该实体上的另一个字段。
答案 1 :(得分:0)
触发侦听器的一种方法是在实体上添加@javax.persistence.Version字段。更多信息请访问:https://stackoverflow.com/a/17073342/12039