6

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

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

4

1 回答 1

0

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

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

于 2013-11-13T10:30:16.060 回答