Spring数据多事务控制

时间:2018-11-07 11:40:12

标签: java spring spring-boot spring-data-jpa spring-data

问题是关于在crudrepository,jparepository ext中使用多个事务。 在我的项目中,有两个实体。 RequestEntitySendingMailEntity。 我的方法中的WorkFlow:

1)保存RequestEntity

2)发送informationService(这是我们购买的一项服务,我们无法控制其任何异常。)

3)保存SendingMailEntity

当2号或3号出现异常时,由于受spring jpa控制的回滚,我们损失了requestEntity

requestEntity的记录永远不会丢失。

如何控制此问题?如何在Spring数据中进行两次独立交易?

感谢帮助。

1 个答案:

答案 0 :(得分:1)

您需要在服务中创建一个专门用于管理/保存requestEntity的方法,并对其进行适当的注释,以便暂停当前事务,并且此代码在新事务中运行,并在退出该方法时提交:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void processRequestEntity(...){
    // jpa repo actions
}