首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA允许EntityListeners执行JPA操作吗?

JPA允许EntityListeners执行JPA操作吗?
EN

Stack Overflow用户
提问于 2020-11-25 16:22:16
回答 1查看 349关注 0票数 0

看起来至少对PreCreate JPA2.1在JPA EntityListener中创建实体来说是可能的。

我想做的是更新托管JPA实体中的@Transient数据,并在@PostPersist@PostUpdate事件中将托管JPA实体发送到Kafka。该操作将从另一个存储库读取以获取一段数据。

然而,当我做这样的事情时,我就会得到一个ConcurrentModificationException

我现在的解决办法是执行一个JOOQ操作,从另一个表中获取我需要的数据。

我的问题是JPA允许这种操作(例如,这可能是Hibernate错误),还是根据规范它实际上是非法的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 07:20:16

根据第3.5.2章(生命周期回调方法)中的JPA 2.1规范,适用某些规则。其中一项声明指出:

通常,可移植应用程序的生命周期方法不应该调用EntityManager或查询操作、访问其他实体实例或修改同一持久性context46中的关系。47生命周期回调方法可以修改被调用的实体的非关系状态。

根据对你问题的描述,你试图做的事情似乎违反了这条规则。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65008726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档