关于事务这方面的事务注解、传播行为、隔离级别等分析

参考链接:https://blog.csdn.net/weixin_40317528/article/details/78349433

然后再来说说为什么会发生这个错误。代码中service都是加了事务的,然而并不是所有的service都需要开启事务,因为有些service根本不支持事务,如果一个service本身不支持事务又加了事务@transactional的话就会抛“JTA transaction unexpectedly rolled back (maybe due to a timeout); nested”这个异常。在一般公司开发的时候,会调用外部的接口,这个是不需要查询我们本地的数据库的,也就是说这里是不能开事务的。检查一下你的不支持事务的service,把事务关闭就问题解决了。另外,如果是service调service(嵌套事务),大service开启了事务,这就是说默认里面的service也是开启事务的(可以去看一下事务的传播行为),这里可以可以设置propagation,就酱,今天还一堆bug在等着我喃。美好的一天从bug开始。

以上暴露了两个问题:

1)事务注解是单独加载某个方法上 还是 加载服务类上 亦或是加载controller上?

2)多个标有事务的service方法 内嵌调用 会有什么问题,事务隔离级别、传播行为此时该怎么配置?

原文地址:https://www.cnblogs.com/syjp/p/13274592.html