ユーザーオブジェクトをセッション中に保持します。初めて更新するとき(entityManager.merge(ent)を使用)、正常に機能します。しかし、2回目は次の例外が発生します。
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.kids.domain.Child#22]
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:492)
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:256)
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:86)
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:781)
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:766)
私はHibernateとJPAでSpringを使用しています。SpringはDAOにEntityManagerを注入しています。毎回新しいfind()を実行し、そのオブジェクトにすべての変更を加えてから、merge()を実行する場合は、正常に機能することを理解しています。しかし、私の場合はそれができません。
また、使用されているEntityManagerのハッシュコードが両方とも同じであることを確認しました。つまり、同じEntityManagerインスタンスが両方の時間で使用されているのに、レコードを2回更新しようとしたときにこの例外が発生するのはなぜですか。
どんな助けでも大歓迎です。