Ale*_*ley 18 java spring transactions exception rollback
@Transactional(rollbackFor = MyCheckedException.class)
public void foo() {
throw new RuntimeException();
}
Run Code Online (Sandbox Code Playgroud)
这个事务会被回滚,还是我还需要在注释中包含RuntimeException.class?
dee*_*aut 17
无需包括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");
}
Run Code Online (Sandbox Code Playgroud)
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
因此它也可以使用CheckedException(默认情况下为RuntimeException)进行回滚,例如:
@Transactional(rollbackFor = Exception.class)
public void save(Book book) throws Exception {
bookRepository.save(book);
System.out.println("Saved in transcation.");
// No data is persisted
if (true) {
throw new Exception();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24277 次 |
| 最近记录: |