Spring @Transactional Service try catch之後不會回滾

一、前言

在開發過程中遇到,在Service層中使用try catch之後,@Transactional沒有生效,發生錯誤之後,事物並沒有回滾,在catch中重新拋出 throw new RuntimeException,也沒有用。找了另外的解決方案,結果生效了,這裏記錄一下。

二、code

在catch中加入下面的代碼即可解決問題。

// 引用的包
import org.springframework.transaction.interceptor.TransactionAspectSupport;
// 業務代碼
try {
    ...
} catch(Exceptione e) {
    e.printStackTrace();
    // 加入這行代碼即可
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}

 

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