我想在另一个持久化上下文中管理一个非托管实体。我读到这可以通过合并来实现:
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
答案 0 :(得分:0)
调用entityManager.flush()
将合并操作提交到数据库中。
通常,提交会延迟。例如,如果您的方法具有@TransactionAttribute
注释。该方法完成后将提交该事务。但是如果你在没有提交的情况下调用em.contains(user)
,你就会得到旧状态。