springboot mybatis sqlserver 事务无法回滚
控制台提示如下
明明已经加入了事务管理,抛出异常还是不会回滚
13:58:03.061 [http-nio-9000-exec-15] INFO c.n.c.u.d.DynamicDataSourceContextHolder - [setDataSourceType,26] - 切换到SQLSERVER_ERP数据源
Creating a new SqlSession
Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8]
JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@595277fa] will be managed by Spring
SQL提示巴拉巴拉
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8]
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8] from current transaction
SQL提示巴拉巴拉
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8]
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8] from current transaction
执行插入sql,插入后执行 int a = 1/0;
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a38ece8]
搜了很多帖子,这里正常应该是事务回滚的提示,可我这里没有
13:58:03.313 [http-nio-9000-exec-15] ERROR c.n.f.e.GlobalExceptionHandler - [notFount,64] - 运行时异常:
java.lang.ArithmeticException: / by zero
at com.nbpt.yygs.service.hkhxkh.impl.YygsHkhxServiceImpl.excuteUpdateAndInsert(YygsHkhxServiceImpl.java:274)
at com.nbpt.yygs.service.hkhxkh.impl.YygsHkhxServiceImpl.hexiao(YygsHkhxServiceImpl.java:245)
at com.nbpt.yygs.service.hkhxkh.impl.YygsHkhxServiceImpl.ywyzidonghexiao(YygsHkhxServiceImpl.java:84)
说明事物没有生效。
检查一下:
1.事物扫描的包路径是否正确。
2.检查一下,注解是否正确:@Transactional 和 @EnableAutoConfiguration
参考:https://www.cnblogs.com/wxc-xiaohuang/p/9471971.html
扫描的包是什么意思呢?我现在是不报错的话SQL可以正常执行的,但是SQL如果执行失败了 事务不会回滚
还想问一下 事务是不是要在同一个mapper里的方法才有效,如果是不同mapper的方法 用在同一个service中应该也能被回滚吧