【发布时间】:2019-04-24 09:47:43
【问题描述】:
我有以下设置(这是一个类比),并且方法B 上的存储库更改不会回滚。传播应该是默认 = REQUIRED,那么解释是什么?
父类.java
@Transactional
public void methodA(){
child.methodB();
anotherMethodThatThrowsARuntimeException();
}
子.java
@Transactional
public void methodB(){
repository.save(entity)
}
首先,我的理解是否正确,因为我应该期望所有内容都回滚?
即使当这段代码被包装在@Transactional(isolation = Isolation.READ_UNCOMMITTED) 测试下时所有这些情况都发生了?
编辑:只是为了解决问题:问题在于。SQL 回滚确实是在外部事务的末尾,但托管上下文没有被清除,因此从内部事务的回滚不可见
【问题讨论】:
-
您的期望是正确的。但我无法重现该问题。可以提供MVCE吗?
-
我正在尝试对在这样的事情之前解释异常的位置进行一些测试,首先我想知道我是否处于正确的假设中
标签: spring spring-data-jpa spring-transactions jta transactional