加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 刷新JPA中的实体

发布时间:2020-12-15 02:29:24 所属栏目:Java 来源:网络整理
导读:我对如何刷新数据库中已有的实体状态感到困惑.更具体一点,假设我有“实体”持有这样的代码: EntityManager em = emf.createEntityManager();em.getTransaction().begin();em.persist(entity);em.getTransaction().commit();entityManager.close(); 由于我关
我对如何刷新数据库中已有的实体状态感到困惑.更具体一点,假设我有“实体”持有这样的代码:

EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(entity);
em.getTransaction().commit();
entityManager.close();

由于我关闭了EntityManager,我的实体实例被分离了.现在假设我有使用此实体实例的其他对象.如果我想从数据库中获取此实体的新状态,我几乎不能使用em.refresh()因为实体是分离的. em.merge()方法返回一个托管实例,因为它不是我对象的同一个实例,这可能是个问题.我可以预见两种解决方案:

>在我的实体对象中创建一个新方法,使用给定的实体实例更新其状态.
>不关闭实体经理(含义!??)

那么,在这种情况下我应该做些什么呢?如何在不丢失其他对象的所有引用的情况下刷新实体对象的状态?想法?

解决方法

如果实体A引用分离的实体B,则合并B返回B’,并刷新B’.如果合并A,A将其B的引用更改为B’.

A ---> B --(merge)--->B'
                    (refresh)
                    /
merge A -----------/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读