srping boot (2.2.5) 事务没有起效 事务显示已回滚 事物回滚成功,但是数据表新插入的数据没有变化

表
表的引擎 inndb 启动类加了 @EnableTransactionManagement
spring boot + mybits +自定义异常处理
a 方法调用b 方法 a,b 方法上都加了 @Transactional 都是public修饰
b方法异常 事物回滚成功,但是数据表新插入的数据没有变化

在异常单处理  手动回滚  报错
  springboot No transaction aspect-managed TransactionStatus in scope



    这是哪里没有配置对吗  事务管理没有效果![自定义异常类](https://img-ask.csdn.net/upload/202005/14/1589438424_157888.png)

自定义异常类

启动类

2020-05-14 15:04:38.805 DEBUG 13184 --- [p-nio-81-exec-3] o.s.j.d.DataSourceTransactionManager : Participating transaction failed - marking existing transaction as rollback-only
2020-05-14 15:04:38.806 DEBUG 13184 --- [p-nio-81-exec-3] o.s.j.d.DataSourceTransactionManager : Setting JDBC transaction [com.mysql.jdbc.JDBC4Connection@5481d76e] rollback-only
2020-05-14 15:04:38.807 DEBUG 13184 --- [p-nio-81-exec-3] o.s.j.d.DataSourceTransactionManager : Participating transaction failed - marking existing transaction as rollback-only
2020-05-14 15:04:38.807 DEBUG 13184 --- [p-nio-81-exec-3] o.s.j.d.DataSourceTransactionManager : Setting JDBC transaction [com.mysql.jdbc.JDBC4Connection@5481d76e] rollback-only
2020-05-14 15:04:38.808 DEBUG 13184 --- [p-nio-81-exec-3] org.mybatis.spring.SqlSessionUtils : Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3be8d5d6]
2020-05-14 15:04:38.808 DEBUG 13184 --- [p-nio-81-exec-3] org.mybatis.spring.SqlSessionUtils : Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3be8d5d6]
2020-05-14 15:04:38.809 DEBUG 13184 --- [p-nio-81-exec-3] org.mybatis.spring.SqlSessionUtils : Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5db5785]
2020-05-14 15:04:38.809 DEBUG 13184 --- [p-nio-81-exec-3] org.mybatis.spring.SqlSessionUtils : Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5db5785]
2020-05-14 15:04:38.810 DEBUG 13184 --- [p-nio-81-exec-3] o.s.j.d.DataSourceTransactionManager : Initiating transaction rollback
2020-05-14 15:04:38.810 DEBUG 13184 --- [p-nio-81-exec-3] o.s.j.d.DataSourceTransactionManager : Rolling back JDBC transaction on Connection [com.mysql.jdbc.JDBC4Connection@5481d76e]
2020-05-14 15:04:38.885 DEBUG 13184 --- [p-nio-81-exec-3] o.s.j.d.DataSourceTransactionManager : Releasing JDBC Connection [com.mysql.jdbc.JDBC4Connection@5481d76e] after transaction
2020-05-14 15:04:38.888 DEBUG 13184 --- [p-nio-81-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler com.example.demo.hander.CloudExceptionHandler#handleOtherExceptions(Exception)
2020-05-14 15:04:38.892 WARN 13184 --- [p-nio-81-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler com.example.demo.hander.CloudExceptionHandler#handleOtherExceptions(Exception)

启动类上是否开启了事务呢?

会不会是异常没有抛出去而是你自己trycatch了吗?

看你的方法是否在同一个类里面,同类调用方法,事务注解是不会生效的,放到不同类试一下

我打个比方比如UserServicea,b两个方法,那么如果用a直接调用b,是不走事务的,就像普通方法的引用一样,所以你可以在Service中注入service本身,比如

    UserService{
    @Autowired
    UserService userService;
            public void a(){userService.b()}
            public void b(){}
    }

当然事务注解不能忘