@Transactional方法内的@Transactional方法调用(均具有默认传播)

时间:2018-11-21 18:39:35

标签: spring spring-data-jpa spring-transactions jta transactional

我具有以下设置(这是一个类比),并且不回退对methodB的存储库所做的更改。传播应默认为=必填,那么可能是什么解释?

Parent.java

@Transactional
public void methodA(){
   child.methodB();
   anotherMethodThatThrowsARuntimeException();
}

Child.java

@Transactional
public void methodB(){
   repository.save(entity)
}

首先,我的理解正确吗,因为我应该期望所有内容都会回滚?

即使在@Transactional(isolation = Isolation.READ_UNCOMMITTED)测试中包装了此代码后,是否发生了所有这些情况?

编辑:只是为了解决问题:问题是。SQL回滚确实在外部事务的末尾,但是未清除托管上下文,因此从内部事务进行的回滚不可见

1 个答案:

答案 0 :(得分:2)

某些数据库引擎不支持事务。首先检查您的数据库引擎。 MySQL的MyISAM引擎就是这种情况的一个例子。