Springboot 事務回滾不生效可能出現的緣由

檢查一下幾點:html

1.數據庫是否爲InnoDB引擎,具體緣由請查看 Mysql引擎類型刨析spring

2.配置文件中是否開啓sql

transaction:
rollback-on-commit-failure: true數據庫

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

@EnableTransactionManagementhtm

4.@Transactional註解位置:blog

@Transactional註解必須和拋出異常的位置在一塊兒事務

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

若是Controller中,調用兩個不一樣Service的方法並開啓了事務回滾,要想事務生效,則須要在Controller也加入@Transactional註解it

5.@Transactional註解默認只能攔截RuntimeException和Error,若是自定義的Exception,須要設置rollbackFor 屬性值,以下

@Transactional(rollbackFor = Exception.class)

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

相關文章
相關標籤/搜索