我們使用休眠與樂觀鎖定。 我們所有的實體都有@version註釋。關於hibernate的最佳更新策略stalestateException
這工作正常,如果用戶試圖保存一個陳舊的對象,我們得到一個stalestateexception。 在我們的例子中,我們想給用戶一個通知屏幕來放棄他的更改或覆蓋數據庫中的當前值。
這是過時狀態異常的常見用例。 我的問題與這個用例有關。如果用戶決定用他的更改覆蓋當前數據庫行,最好的策略是什麼?我已經通過了hibernate參考指南和不同的網站,但所有提到的事實是,您必須自己去捕捉stalestateexception,然後使用programmatical來處理數據的覆蓋。 我想知道如果hibernate有一些實用程序來簡化這個策略,那麼如果用戶決定用他的數據覆蓋,最簡單的事情就是從數據庫中檢索實體的最後一個版本,然後將所有更改的字段複製到該對象然後將更改的對象保存回數據庫。 但我不能停止想知道如果沒有更優雅的解決方案。
在某些情況下,我們確實創建了一個「合併用戶界面」。 但有一些使用情況下數據不夠重要只是被覆蓋,我想知道是否有一些默認方法,或者如果你只需要自己編寫算法。 – 2012-01-20 14:09:41
不是我意識到我害怕。 – 2012-01-20 16:17:21
雖然這是一個很好的問題。我花了不少時間思考解決這種情況的最佳方法! – 2012-01-22 13:02:51