考慮這個場景: 一個Db事務從包含版本控制的不同表中創建多個行。Hibernate(JPA):當幾個對象被修改和提交時如何處理StaleObjectStateException
例如: 店鋪和產品。 shopList可能包含產品(其數量在shoplist中)並且產品具有其當前庫存。
當我插入ou編輯shopList時,我想更新shopList中這些產品的庫存以保持庫存一致。爲此,我打開一個交易,插入/更新shopList,更新每個產品的庫存(應用增量),然後提交交易。至今沒什麼大不了的。
但是,其他用戶可能已經更新了一個或多個共同的產品。甚至更新shopList本身。在這兩種情況下,在提交事務時我都會得到一個StaleObjectStateException。
問題是:有沒有辦法確定哪個表導致StaleObjectStateException?
如果產品引起異常,我可以刷新數據庫中的所有環境產品,然後重新應用庫存量增量。這很好。 如果shopList導致異常,最好將問題簡單報告給用戶,以便他可以重新開始。
非常感謝您的幫助。
只有在調用session.flush時才引發異常的滿分。如果它未被調用,它將作爲RollbackException返回。在這個例外上,你無法做任何事情。你不能查詢任何信息,因爲它沒有任何信息。確保您呼叫同花順。 – sethu 2013-03-05 05:40:29