看起来至少对PreCreate JPA2.1在JPA EntityListener中创建实体来说是可能的。
我想做的是更新托管JPA实体中的@Transient
数据,并在@PostPersist
和@PostUpdate
事件中将托管JPA实体发送到Kafka。该操作将从另一个存储库读取以获取一段数据。
然而,当我做这样的事情时,我就会得到一个ConcurrentModificationException
。
我现在的解决办法是执行一个JOOQ操作,从另一个表中获取我需要的数据。
我的问题是JPA允许这种操作(例如,这可能是Hibernate错误),还是根据规范它实际上是非法的。
发布于 2020-11-26 07:20:16
根据第3.5.2章(生命周期回调方法)中的JPA 2.1规范,适用某些规则。其中一项声明指出:
通常,可移植应用程序的生命周期方法不应该调用EntityManager或查询操作、访问其他实体实例或修改同一持久性context46中的关系。47生命周期回调方法可以修改被调用的实体的非关系状态。
根据对你问题的描述,你试图做的事情似乎违反了这条规则。
https://stackoverflow.com/questions/65008726
复制相似问题