SpringBoot 事務回滾,自己寫了try catch 導致事務沒有回滾

項目上有個需求,先把表A的數據按要求備份到表B中,然後再把表A的備份數據刪掉。按照邏輯,在備份和刪除的過程中,出現任何異常都要回滾數據。於是在方法上加了@Transactional註解,認爲這樣,遇到異常就可以回滾了。自己在代碼中故意設置了一個異常,代碼如下圖:

 

結果測試的時候,發現數據並沒有回滾。

後來各種百度和請教,結果發現是自己加了try{}catch的原因導致的,自己捕獲了異常,事務就捕獲不到異常了,所以也就不會回滾了。

自己把try{}catch 刪掉之後,再進行測試,開始插入的數據就回滾了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章