指定@Transactional回滚是否也包括运行时异常
2022-09-01 15:46:43
@Transactional(rollbackFor = MyCheckedException.class)
public void foo() {
throw new RuntimeException();
}
此事务是否会回滚,或者我是否还需要在注释中包含 RuntimeException.class?
@Transactional(rollbackFor = MyCheckedException.class)
public void foo() {
throw new RuntimeException();
}
此事务是否会回滚,或者我是否还需要在注释中包含 RuntimeException.class?
无需包含在列表中。即使您不提及它,它也会处理它。RuntimeException
rollbackFor
我已经为jdbcTemplate尝试了一下:-
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = MyException.class)
public void updateSalary(final int increment){
jdbcTemplate.update("update EMPLOYEE set emp_salary = emp_salary + ?", increment);
throw new RuntimeException("update exception");
}
Output: After Insertion: 1 Deepak 35000 2 Yogesh 35000 3 Aditya 35000 update exception After Update 1 Deepak 35000 2 Yogesh 35000 3 Aditya 35000
但是,请注意,默认情况下,Spring Framework的事务基础结构代码仅在运行时未检查的异常情况下将事务标记为回滚;也就是说,当引发的异常是 RuntimeException 的实例或子类时。(默认情况下,错误也会导致回滚。从事务方法引发的已检查异常不会导致事务回滚。