我想在另一个 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/