0

我想使用JPA實現樂觀鎖定。我讀到添加一個額外的字段,帶有@Version註釋的版本可以用來應用隱式樂觀鎖定。實現後,如果有多個用戶嘗試更新同一個實體,我將能夠防止丟失更新。如果進行任何更新並且如果版本字段與實體的版本字段不匹配,則意義實體由其他用戶同時更新,那麼沒有行被更新,從而防止丟失更新。如何知道持久實體是否已更新?春季交易管理

我使用Spring的事務管理支持,其中用於更新的實體,我必須是由Spring的事務管理器更新實體領域和數據庫更新是照顧,這意味着我無需顯式調用更新查詢。

我的問題是,我怎麼就能夠知道是否爲特定用戶所做的更新是成功的?如果操作不成功

回答

0

OptimisticLockException會被拋出 - 如果其他事務修改之前的實體。相關線程的詳細信息:

+0

感謝響應。是的,OLE異常將被拋出。但我的問題是,因爲我試圖使用Spring Transaction管理,所以我不執行更新或提交明確。那麼,我怎樣才能捕捉到這個異常並採取適當的行動? –

+0

根據http://stackoverflow.com/questions/17203452/how-to-catch-optimisticlockexception-in-jpa它可以在被調用的方法之外處理,或者明確地在裏面調用entityManager.flush()。 – Justas