gpt4 book ai didi

java - Spring数据事务控制

转载 作者:行者123 更新时间:2023-12-02 10:37:02 25 4
gpt4 key购买 nike

问题是关于在 crudrepository、jparepository ext 中使用多个事务。在我的项目中,有两个实体。请求实体和发送邮件实体。我的方法中的工作流程:

1)保存RequestEntity,

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中处理所有异常,不要让它抛回调用函数。

如果单独的异常处理不起作用,您还可以尝试将 sendMail 移动到带有 override 的新公共(public)类中

关于java - Spring数据事务控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53201989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com