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

Java 如何从@Transactional(propagation=propagation.REQUIRED,rollboor=Throwable.class)中排除特定异常?,java,spring-boot,jpa,transactions,rollback,Java,Spring Boot,Jpa,Transactions,Rollback,在上面的代码中,如何从回滚此事务中排除DataIntegrityViolationException?您应该使用norollboor属性。例如: @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) public void abc() { try{ //some Code } catch(DataIntegrityViolationException ex) {

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

您应该使用
norollboor
属性。例如:

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public void abc()
{
 try{
  //some Code
  }
  catch(DataIntegrityViolationException ex)
  {
   //some Code
  }
}
默认情况下,
@Transactional
仅适用于
运行时异常
s和
错误
s,但不适用于选中的异常

因此,如果确实要为每个异常回滚事务,除了
DataIntegrityViolationException
之外,还应指定
rollboor
属性:

@Transactional(noRollbackFor = DataIntegrityViolationException.class)

那么,它会回滚到任何可丢弃的Expect DataIntegrityViolationException吗?或者我必须编写如下代码:
@Transactional(propagation=propagation.REQUIRED,rollboor=Throwable.class,norollboor=DataIntegrityViolationException.class)
@Transactional(rollbackFor = Throwable.class, noRollbackFor = DataIntegrityViolationException.class)