java - jpa 合并非托管实体

标签 java mysql hibernate jpa

我想在另一个 Persistence Context 中管理一个非托管实体。我读到这可以通过合并来实现:

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 和 user 完全一样。

我做错了什么?

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

最佳答案

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

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

关于java - jpa 合并非托管实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19746240/

相关文章:

java - Spring 数据 : string lookup in complex object

java - Java类可以是对象,对象可以是类吗?

mysql - 多区域 AWS MySQL RDS 架构

hibernate - 为什么我得到 Grails SessionFactoryProxy?

java - ResourceLeakDetector.setLevel(PARANOID) 不生成资源泄漏日志

java - 从字符串中获取唯一的整数值

java - HSQLDB 独立用于单元测试

java - Confluence 中的 <property name ="hibernate.setup">true</property> 有何作用?

MYSQL:右连接不返回预期的行

Mysql 转换为单选查询