我想让一个非托管实体在另一个持久化上下文中托管。我读到这可以通过merge实现:
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 EAP6.1
发布于 2013-11-13 18:30:16
调用entityManager.flush()将合并操作提交到数据库中。
通常情况下,提交会被延迟。例如,如果您的方法有一个@TransactionAttribute注释。该事务将在该方法完成后提交。但是,如果在没有提交的情况下调用em.contains(user),那么只会得到旧的状态。
https://stackoverflow.com/questions/19746240
复制相似问题