gpt4 book ai didi

java - CMT 中的 PersistenceContext 似乎与 BMT 中的 PersistenceContext 不同

转载 作者:行者123 更新时间:2023-12-01 15:22:01 24 4
gpt4 key购买 nike

我当前在刷新 PersistenceContext 中的数据时遇到问题。我有一个 CMT EJB3 bean,它调用 BMT EJB3 bean。在 BMT bean 中,我对对象执行一些处理逻辑。我提交了更改,并且可以在数据库中看到更改。

在我的 BMT 方法中完成该过程后,我返回到我的 CMT bean。我从 PersistenceContext 重新获取(.find() 方法)我的对象(因为 BMT bean 更改了一些值),但我仍然获取对象的旧值。我什至尝试了 .refresh() 方法,但数据没有更新。

CMT 和 BMT bean 是否可能使用不同的 PersistenceContext?

最佳答案

持久性上下文通过正在运行的事务进行传播,除了正常持久性上下文(例如非扩展)之外,其 L1 缓存的生命周期也限定在同一事务内。

因此,如果您在 BMT bean 中启动一个新事务,与其持久性上下文交互,然后提交,那么调用 CMT bean 的持久性上下文中确实不会有更新的值。

从数据库中读取新的值应该可以。因此,如果您在数据库中看到这些更改,特别是如果 CMT 和 BMT bean 都部署在同一个应用程序中(因此不会产生 L2 不一致影响),那么 refresh 实际上应该可以工作。

对 CMT bean 的新调用会发生什么?那么它会看到更新后的值吗?

关于java - CMT 中的 PersistenceContext 似乎与 BMT 中的 PersistenceContext 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10756673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com