檢查一下幾點: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