首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jpa合并非托管实体

问jpa合并非托管实体
EN

Stack Overflow用户
提问于 2013-11-03 04:01:45
回答 1查看 1.2K关注 0票数 6

我想让一个非托管实体在另一个持久化上下文中托管。我读到这可以通过merge实现:

代码语言:javascript
复制
em.merge(user);

但如果我这样做,它不会添加到上下文中:

代码语言:javascript
复制
boolean isManaged = em.contains(user);

总是假的。

即使我做了以下几点:

代码语言:javascript
复制
User dbuser = em.find(User.class, user.getId());
em.merge(user);
boolean isManaged = em.contains(user);

dbuser和user是完全相同的。

我做错了什么?

我使用的是JPA、MySql DB、JBoss EAP6.1

EN

回答 1

Stack Overflow用户

发布于 2013-11-13 18:30:16

调用entityManager.flush()将合并操作提交到数据库中。

通常情况下,提交会被延迟。例如,如果您的方法有一个@TransactionAttribute注释。该事务将在该方法完成后提交。但是,如果在没有提交的情况下调用em.contains(user),那么只会得到旧的状态。

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

https://stackoverflow.com/questions/19746240

复制
相关文章

相似问题

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