Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
服务事务中的spring存储库事务_Spring_Hibernate_Transactions_Spring Data Jpa - Fatal编程技术网

服务事务中的spring存储库事务

服务事务中的spring存储库事务,spring,hibernate,transactions,spring-data-jpa,Spring,Hibernate,Transactions,Spring Data Jpa,我有一个问题: spring数据jpa存储库(findAll、save等)中的隐式方法是@Transactional。 因此,在这种情况下: @Transactional public void atomicTransaction() { repository1.save(entity); repository2.save(entity); } 如果repository2#save失败并回滚,它是否会传播到atomicTransaction(),以便Repository1#sa

我有一个问题:
spring数据jpa存储库(findAll、save等)中的隐式方法是
@Transactional
。 因此,在这种情况下:

@Transactional
public void atomicTransaction() {
    repository1.save(entity);
    repository2.save(entity);
}

如果repository2#save失败并回滚,它是否会传播到
atomicTransaction()
,以便Repository1#save也回滚?

jpa
存储库的
save
方法将打开微事务,除非它已经在事务上下文中。在您的例子中,您已经用
@Transactional
注释了该方法,因此这意味着它将被视为一个原子工作单元,即它要么完全执行,要么在出现错误时回滚

是的,这是事务的基本原则之一。那么在save方法中触发回滚的异常是“rethrown”,并在主事务中触发回滚?因为就我所知,必须显式地设置嵌套事务的传播属性know@fooBar我认为这很清楚,但也许不是。在回答中,我说如果您使用事务性方法对该方法进行注释,则不会为save方法创建其他单独的事务。如果发生异常,将回滚此主事务。