gpt4 book ai didi

java - 在 Seam 中使用不同的类时,确保一个事务在另一个事务开始之前提交

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

我有一个包含两个按钮的页面,单击每个按钮实际上会调用两个不同类中的方法,这些类中已注入(inject)了entityManager。

现在,当在类 1 中调用方法 save() 时,实体将使用最新值进行更新。在该方法返回之前,我调用 entityManager.flush() 以便将更改刷新到数据库。

紧接着,如果我单击另一个调用类 2 的方法 advance() 的按钮并使用 entityManger.find(entity.class, Long.valueOf(entityId)) 加载相同的实体,在上一个方法调用中更新的字段显示为 null

我是否需要进行任何配置以确保不会发生这种情况,或者如何在这两个类之间共享实体管理器,以便我可以确保刷新操作后的调用在更新的数据库上工作。

最佳答案

事务已提交。这不是问题所在。

来自EntityManager.find()的java文档方法:

If the entity instance is contained in the persistence context, it is returned from there.

这意味着:如果该对象已存在于您的entityManager 中,则查找不会从数据库中获取该对象。

要刷新实体,只需调用 refresh(entity) :

MyEntity myEntity = entityManger.find(MyEntity.class, Long.valueOf(entityId));
entityManger.refresh(myEntity);

关于java - 在 Seam 中使用不同的类时,确保一个事务在另一个事务开始之前提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781677/

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