问题是关于在crudrepository,jparepository ext中使用多个事务。在我的项目中,有两个实体。 RequestEntity和SendingMailEntity。我的方法中的WorkFlow:
1)保存RequestEntity,
2)发送信息服务(这是我们购买的一项REST服务。我们无法控制其任何异常。)
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不会保存。
答案 0 :(得分:1)
处理sendMail
中的所有异常,不要让它返回给调用函数。
如果单独的异常处理不起作用,您还可以尝试使用sendMail
将override
移到新的公共类中