Java 这是怎么发生的? 10次中有1次,10次中有9次一切正常(数据相同)。代码是多线程的 我可以提供其他细节,没问题。我已经找到了原因 事实证明,在一个用@Transactional注释的方法(我们称之为methodA)中,还有另一个用@Transaction
Java 这是怎么发生的? 10次中有1次,10次中有9次一切正常(数据相同)。代码是多线程的 我可以提供其他细节,没问题。我已经找到了原因 事实证明,在一个用@Transactional注释的方法(我们称之为methodA)中,还有另一个用@Transaction,java,postgresql,mybatis,transactional,Java,Postgresql,Mybatis,Transactional,这是怎么发生的? 10次中有1次,10次中有9次一切正常(数据相同)。代码是多线程的 我可以提供其他细节,没问题。我已经找到了原因 事实证明,在一个用@Transactional注释的方法(我们称之为methodA)中,还有另一个用@Transactional注释的方法(我们称之为methodB)。这个内部方法(methodB)抛出了一个异常,异常在methodA中被抛出,代码愉快地继续运行。然而,一旦myBatis看到异常,它就会回滚整个事务 大概是这样的: methodA (@Transac
这是怎么发生的?
10次中有1次,10次中有9次一切正常(数据相同)。代码是多线程的
我可以提供其他细节,没问题。
我已经找到了原因
事实证明,在一个用@Transactional注释的方法(我们称之为methodA)中,还有另一个用@Transactional注释的方法(我们称之为methodB)。这个内部方法(methodB)抛出了一个异常,异常在methodA中被抛出,代码愉快地继续运行。然而,一旦myBatis看到异常,它就会回滚整个事务
大概是这样的:
methodA (@Transactional)
begin
select * ....
update .....
methodB: select ....
methodB: throw exception -> myBatis calls rollback
methodA: catch exception, go on
methodA: other code
同时我也找到了原因
事实证明,在一个用@Transactional注释的方法(我们称之为methodA)中,还有另一个用@Transactional注释的方法(我们称之为methodB)。这个内部方法(methodB)抛出了一个异常,异常在methodA中被抛出,代码愉快地继续运行。然而,一旦myBatis看到异常,它就会回滚整个事务
大概是这样的:
methodA (@Transactional)
begin
select * ....
update .....
methodB: select ....
methodB: throw exception -> myBatis calls rollback
methodA: catch exception, go on
methodA: other code