我在我的 Spring webapp 中使用 JPA 和 Hibernate 作为实现。
我使用EntityListener
s 进行审计(Spring-data)和其他通知目的。一般来说,它工作正常。但是,当对多对多集合/关系进行更改时,如果不对实体本身的任何字段进行任何其他更改,则不会触发 s的@PostUpdate
事件。EventListener
举一个具体的例子:我有一个User
和一个Role
实体,它们之间具有多对多关系,使用基础表。如果我转到我的用户管理 GUI,并向用户添加(或删除)角色,而不更改任何其他内容,则不会触发“postUpdate”事件,也不会修改审核信息。
它有一些逻辑(在低级别),因为用户或角色表都没有更新,只有关系表。然而,关系本身并未建模为实体类,因此不可能对其应用审计,至少在 JPA 级别上是不可能的,因此触发实体本身的更改事件是有意义的。
这是正常的 JPA 行为,还是 Hibernate 特有的?有什么解决方法吗?你会做什么来触发这个事件?想法?
注意:我发现很少提到这个限制,甚至更少的解决方案: 这个 SO question(没有有用的答案)和Hibernate 论坛上的这篇文章也没有任何答案。