6

管理されていないエンティティを別の Persistence Context で管理したいと考えています。これはマージで作成できると読みました:

em.merge(user);

しかし、これを行うと、コンテキストに追加されません:

boolean isManaged = em.contains(user);

は常に false です。

私が次のようにしても:

User dbuser = em.find(User.class, user.getId());
em.merge(user);
boolean isManaged = em.contains(user);

dbuser とユーザーはまったく同じです。

私は何を間違っていますか?

JPA、MySql DB、JBoss EAP 6.1 を使用しています

4

1 に答える 1

0

を呼び出しentityManager.flush()て、マージ アクションをデータベースにコミットします。

通常、コミットは遅れます。たとえば、メソッドに@TransactionAttribute注釈がある場合。メソッドが終了すると、トランザクションがコミットされます。しかしem.contains(user)、コミットせずに呼び出すと、古い状態になるだけです。

于 2013-11-13T10:30:16.060 に答える