我具有以下设置(这是一个类比),并且不回退对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回滚确实在外部事务的末尾,但是未清除托管上下文,因此从内部事务进行的回滚不可见
答案 0 :(得分:2)
某些数据库引擎不支持事务。首先检查您的数据库引擎。 MySQL的MyISAM引擎就是这种情况的一个例子。