不要让事务回滚特定类型的 RuntimeException

Do NOT let transaction rollback for a particular type of RuntimeException

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

我有一个 class 叫做 CustomException extends RuntimeException,我想在抛出它之前做某事。但是由于回滚,doSth() 所做的任何事情都会回滚。

doSth();
throw new CustomException();

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

但是在执行此操作后,我必须将 throws CustomException 添加到将调用此代码块的所有方法。所以只是想知道是否有更优雅的方式

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

@Transactional(noRollbackFor = customException.class)