问题是关于在crudrepository,jparepository ext中使用多个事务。
在我的项目中,有两个实体。 RequestEntity
和SendingMailEntity
。
我的方法中的WorkFlow:
1)保存RequestEntity
,
2)发送informationService
(这是我们购买的一种REST服务。我们无法控制其任何异常。)
3)保存SendingMailEntity
。
当数字2或3发生异常时,由于受spring jpa控制的回滚,我们丢失了requestEntity
。requestEntity
的记录永远不会丢失。
如何控制此问题?如何在Spring数据中进行两次独立交易?
感谢帮助。
最佳答案
您需要在服务中创建一个专门用于管理/保存requestEntity
的方法,并对其进行适当注释,以便暂停当前事务,并且此代码在新事务中运行,并在退出该方法时提交:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void processRequestEntity(...){
// jpa repo actions
}