如何解决@Transactional 需要回滚除了数据库中的一个保存之外的所有内容
我有一个方法:
@Transactional
@Override
public void createFile(final String number) {
try {
//code to save values
throw new Exception(number);
} catch(Exception e){
this.repository.save(e.getMessage());
}
}
createFile方法中有很多数据库保存操作,发生错误时需要回滚。 Catch 需要将错误信息保存在表中。
如何在出现异常的情况下回滚整个事务但仍然这样做保存/更新 this.repository.save(e.getMessage());在数据库上?谁能帮我解决这个问题?提前致谢。
解决方法
我假设您使用的是 Spring。
将其拆分为两种方法。例如,createFile
带有调用另一个的 try-catch,例如 createFileWorker
带有 //code to save values
。从 createFileWorker
呼叫 createFile
。如果这两个方法在同一个类中,例如 MyService
,则必须使用 @Lazy
将代理的 MyService
注入 MyService
,并且必须调用 {{ 1}} 通过这个代理的惰性实例。 createFileWorker
应使用 createFileWorker
进行注释。
@Transactional(propagation=Propagation.REQUIRES_NEW)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。