@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public void abc()
{
try{
//some Code
}
catch(DataIntegrityViolationException ex)
{
//some Code
}
}
以上代码中,如何从回滚此事务中排除DataIntegrityViolationException?
答案 0 :(得分:1)
您应该使用noRollbackFor
属性。示例:
@Transactional(noRollbackFor = DataIntegrityViolationException.class)
默认情况下,@Transactional
仅适用于RuntimeException
和Error
,而不适用于已检查的异常。
因此,如果您确实要针对除DataIntegrityViolationException
以外的每个异常回滚事务,则还应指定rollbackFor
属性:
@Transactional(rollbackFor = Throwable.class, noRollbackFor = DataIntegrityViolationException.class)