2013-02-01 61 views
1

我有兩個類A和B的對象(都映射到同一個表,並有一個在我的休眠配置。這兩個對象中的標記也引用數據庫中表的主鍵)。如何使用多個POJO更新數據庫中的同一個表?

當用戶使用我的應用程序時,在某個時間點對象A被更新。稍後對象B被更新。有時,會有這種情況發生的異常,我認爲它是因爲我使用的是這樣的複式對象(以下信息打印)

org.hibernate.StaleObjectStateException:行被其它事務更新或刪除(或unsaved-值映射是不正確的):

我是否需要重寫這些對象的equals方法(如explained in this question)時的版本檢查(樂觀鎖)失敗

+0

A和B 2是不同的類還是同一類的2個實例? –

+0

也編輯了這個問題。 A和B是不同的類 – Karthik

回答

2

StaleObjectStateException通常拋出? 這是一個在併發環境中很常見的事情。您可能需要正確的邏輯來處理此異常,例如爲失敗事務的用戶提供一些有用的消息,如「您好,您要更新的數據剛剛由另一個用戶更新」或「您正在嘗試更新過期數據「blablabla。總而言之,我認爲你不需要做任何關於繪圖的事情。

0

可能是舊的事務沒有提交,並且flush()也很有用,因爲沒有關於會話何時執行JDBC調用的保證,只有執行它們的順序(除了使用flush())。

相關問題