如何从@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Throwable.class)中排除特定异常?

时间:2019-09-06 07:09:48

标签: java spring-boot jpa transactions rollback

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public void abc()
{
 try{
  //some Code
  }
  catch(DataIntegrityViolationException ex)
  {
   //some Code
  }
}

以上代码中,如何从回滚此事务中排除DataIntegrityViolationException?

1 个答案:

答案 0 :(得分:1)

您应该使用noRollbackFor属性。示例:

@Transactional(noRollbackFor = DataIntegrityViolationException.class)

默认情况下,@Transactional仅适用于RuntimeExceptionError,而不适用于已检查的异常。

因此,如果您确实要针对除DataIntegrityViolationException以外的每个异常回滚事务,则还应指定rollbackFor属性:

@Transactional(rollbackFor = Throwable.class, noRollbackFor = DataIntegrityViolationException.class)
相关问题