4

typedQueryオブジェクトからresultListを取得します。そのリストから最初のオブジェクトを取得します。

例えば。LoginAttempt loginAttempt = loginAttempts.get(0);

の場合、このオブジェクトを更新して、entityManager.merge(loginAttempt);正常に更新されたと呼びます。

しかし、このオブジェクトを削除しようとすると、例外が発生します。java.lang.IllegalArgumentException: Removing a detached instance.

なにか提案を。ありがとう :)

実は削除したいだけです。マージについては、マージは機能しているのに削除が機能していないと混乱しているためです。

4

2 に答える 2

10

マージは、デタッチ状態から管理状態に移行することが目的であるため、実際に機能しています。一方、削除は管理対象エンティティでのみ機能します。

管理対象エンティティがある場合は、それを呼び出すことができますem.remove(-)
デタッチされたエンティティがある場合は、を呼び出してからを呼び出す必要がObject managed = em.merge(detached)ありますem.remove(managed)。これは、同じトランザクション境界内で行う必要があります。

于 2012-10-17T09:51:08.710 に答える
0

すばやく検索すると、同じトランザクションでこれを行う必要があることがわかります。マージしてから削除することはできません。同じトランザクションで行うか、2つのトランザクションに分ける必要があります

于 2012-10-17T09:11:02.107 に答える