我們將用戶對象保留在會話中。當我們第一次更新它(使用entityManager.merge(ent))時,它工作正常;但第二次我得到以下異常:嘗試在休眠中第二次更新記錄時發生異常
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)
我使用的彈簧,休眠& JPA。 Spring在DAO中注入EntityManager。我明白,如果我會每次都做一個新的find(),然後對該對象進行所有更改,然後merge()..它會正常工作..但在我的情況下,我不能這樣做。
我也檢查過,使用的EntityManager的哈希碼是相同的時間;即同一個EntityManager實例正在使用這兩個時間那麼爲什麼它在嘗試第二次更新記錄時會產生此異常
任何幫助將不勝感激。
我試圖根據這個假設進行調試;合併確實會返回一個新的對象(具有不同的哈希碼),但它與原始對象具有相同的版本。我認爲在調用commit後版本會更新(這是由spring框架完成的) – Deepak