一、前言
在開發過程中遇到,在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();
}