问题是关于在crudrepository jparepository ext.中使用多个事务。在我的项目中,有两个实体。RequestEntity和SendingMailEntity。我的方法中的工作流:
1( 保存请求实体,
2( 发送信息服务(这是我们购买的一项休息服务。我们无法控制它的任何异常。(
3( 保存SendingMailEntity。
当我们在编号2或3上出现异常时,由于spring-jpa控制的回滚,我们丢失了requestEntity。
requestEntity的记录永远不会丢失。
@Transactional
public RequestEntity create(RequestEntity entity) {
entity=requestRepository.save(entity);
sendMail(entity);
}
@Transactional(propagation=Propagation.REQUIRES_NEW)
public SendingMailEntity sendMail(RequestEntity entity) {
/*
*
*/
informationService(entity.*,*,*);
/*
*
*/
sendingMailRepository.save(sendingMailEntity);
}
此代码块不起作用。当sendMail出现错误时,RequestEntity没有保存。
处理sendMail
内部的所有异常,不要让它返回到调用函数。
如果单独的异常处理不起的作用,您也可以尝试使用override
将sendMail
移动到一个新的公共类中