首页 > 解决方案 > 不要让特定类型的 RuntimeException 的事务回滚

问题描述

嗨,有没有办法在我抛出特定类型的 RuntimeException 后让 spring 事务不回滚?

我有一个名为 CustomException 的类扩展了 RuntimeException,我想在抛出它之前做某事。但是由于回滚,doSth() 所做的任何事情都会被回滚。

doSth();
throw new CustomException();

我可以通过将 CustomException 从扩展 RuntimeException 更改为 Exception 来管理它,以便它成为一个检查异常。

但是,在这样做之后,我将不得不添加throws CustomException到将调用此代码块的所有方法。所以只是想知道是否有更优雅的方式

标签: springspring-transactionsruntimeexception

解决方案


您应该使用@Transactional 的 noRollbackFor 属性。

@Transactional(noRollbackFor = customException.class) 

推荐阅读