Springboot 事務回滾不生效可能出現的原因


檢查一下幾點:

1.數據庫是否為InnoDB引擎,具體原因請查看 Mysql引擎類型刨析

2.配置文件中是否開啟

transaction:
rollback-on-commit-failure: true

3.是否在啟動類中加入注解(此項可忽略,spring boot 默認開啟了事務)

@EnableTransactionManagement

4.@Transactional注解位置:

@Transactional注解必須和拋出異常的位置在一起

在Service中加入的事務注解,手動拋出異常時要在Service中拋出,才能看到效果

如果Controller中,調用兩個不同Service的方法並開啟了事務回滾,要想事務生效,則需要在Controller也加入@Transactional注解

5.@Transactional注解默認只能攔截RuntimeException和Error,如果自定義的Exception,需要設置rollbackFor 屬性值,如下

@Transactional(rollbackFor = Exception.class)

注意:添加@Transactional的方法必須是public


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM