繁体   English   中英

jpa合并非托管实体

[英]jpa merge unmanaged entity

我想在另一个持久化上下文中管理一个非托管实体。 我读到这可以通过合并来完成:

em.merge(user);

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

boolean isManaged = em.contains(user);

总是假的。

即使我做了以下事情:

User dbuser = em.find(User.class, user.getId());
em.merge(user);
boolean isManaged = em.contains(user);

dbuser和用户完全相同。

我究竟做错了什么?

我正在使用JPA,MySql DB,JBoss EAP 6.1

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM