java - 如何:允许@Transactional 函数调用另一个失败并回滚的@Transactional 函数而不先回滚@Transactional
问题描述
我有一个场景,其中一个 @Transactional 函数正在调用另一个函数,而当第二个函数出错时,它会从两个函数回滚事务。当第二个失败时,我有没有办法防止第一个回滚?下面只是一个示例,不是真实场景,而是函数 A 调用 B 并且如果 B 错误 A 尝试将错误写入 DB。在这种情况下,当 B 失败时,由于回滚,A 中的保存失败。
功能一:
@Transactional
public void A(){
try{
String test = B();
}catch(Exception e){
//On error write the error to table
ExecutionError error = new ExecutionError();
error.setErrorId(GUIDUtil.uuid());
error.setErrorMessage(e.getMessage());
executionErrorDao.save(error);
}
}
功能 B:
@Transactional
public String B(){
Person person = new Person();
person.setPersonId(GUIDUtil.uuid());
person.setPersonName("Person");
personDao.save(person);
return person.getPersonId();
}
解决方案
推荐阅读
- git - Visual Studio Code - 源代码管理:添加 .gitignore 异常
- sql - 如果列有日期和时间,如何检查当前日期?
- flutter - Flutter - 更改小部件的背景颜色
- selenium - Chromedriver - 未授予 IE 标签权限
- jenkins - 如何触发从 GitHub webhook 运行的 Jenkins 管道并仍然允许手动构建?
- php - 如何在ionic 4中将数组从.php文件传递到.ts文件
- sql - SQL Queue 在 2 周内获得工作量 [SQL Server]
- azure-logic-apps - 向使用 LogicApps 连接器创建的新 OneNote 页面添加“标题”?
- php - 如何获取点击公司链接的电子邮件?邮件黑猩猩
- java - 验证文本字段意外结果