記JPA 儲存資料異常: Row was updated or deleted by another transaction
用Hibernate的小夥伴可能也知道,偶爾會出現上述標題中的異常。但是此處陳述的情況前提是:程式碼寫正確的情況。
1.有兩個物件,如下關係圖:在B 類中引用了A類;
2.程式碼的執行流程大致如下:(所有流程都是在一個事務中,其中編碼唯一性校驗是用切面的做的,未開啟事務)
3. 異常資訊:
javax.persistence.OptimisticLockException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [com.xxx.xx#10]
at org.hibernate.internal.ExceptionConverterImpl.wrapStaleStateException(ExceptionConverterImpl.java:223)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:93)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1539)
at org.hibernate.query.Query.getResultList(Query.java:165)
4.通過檢視debug 除錯進入Hibernate 的原始碼,發現在儲存B的時候報錯了,大致原因就是因為:在校驗B的編碼是否唯一時,Hibernate flush了,將A的版本號設為1,而由於是同一個事務,儲存B的時候A已經發生了變化,故報已經被另一個事務更新或刪除。
5.解決方式:
在校驗編碼是否唯一時,將重新開啟一個新的事務,避開flush即可解決。
相關文章
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- 還在佔用儲存的程式lsof grep deleted;delete
- 大資料儲存平臺之異構儲存實踐深度解讀大資料
- 資料儲存-領存高速海量資料記錄儲存模組產品介紹
- MySQL儲存過程的異常處理方法MySql儲存過程
- 資料儲存--檔案儲存
- 記憶體中的資料儲存記憶體
- EntityFramework Core筆記:儲存資料(4)Framework筆記
- 異常資訊解決:Could not obtain transaction-synchronized Session for current threadAIsynchronizedSessionthread
- 使用SpringBoot JPA進行自定義的儲存及批量儲存Spring Boot
- 常見的瀏覽器端資料儲存方案瀏覽器
- 資料儲存(1):從資料儲存看人類文明-資料儲存器發展歷程
- 使用SpringBoot-JPA進行自定義的儲存及批量儲存Spring Boot
- 異常篇——異常記錄
- 儲存裝置異常告警,如何秒速定位問題?
- Python入門學習 之 永久儲存、異常處理Python
- 【伺服器資料恢復】異常斷電導致ESXI無法連線儲存的資料恢復案例伺服器資料恢復
- 【伺服器資料恢復】多次異常斷電後儲存執行中突然崩潰的資料恢復伺服器資料恢復
- iOS 資料儲存iOS
- TiDB資料儲存TiDB
- 資料儲存:CoreData
- Spring Data JPA中事務使用異常TransactionUsageExceptionSpringException
- 雲上大資料儲存:探究 JuiceFS 與 HDFS 的異同大資料UI
- WPS異常關閉怎麼恢復檔案?Wps文件儲存及自動儲存方法
- 記錄一次資料儲存出錯
- 讀書筆記5-資料儲存篇筆記
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 資料儲存(歸檔解檔,沙河儲存)
- DataIntegrityViolationException異常:java利用mymatis連線資料庫異常AIExceptionJava資料庫
- Flutter 資料儲存 SharedPreferencesFlutter
- SRAM資料儲存原理
- 用SharedPreference儲存資料
- 儲存資料之SharedPreference
- SettingsProvider資料儲存位置IDE
- Android中的資料儲存之檔案儲存Android
- k8s之資料儲存-配置儲存K8S
- 資料庫事務耗時過長導致Could not retrieve transaction read-only status from server異常資料庫Server
- 聚焦資料時代新儲存需求,浪潮儲存的新儲存之道