Java 如何从@Transactional(propagation=propagation.REQUIRED,rollboor=Throwable.class)中排除特定异常?
在上面的代码中,如何从回滚此事务中排除DataIntegrityViolationException?您应该使用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) {
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)