当我在catch块中抛出异常时,@ Transactional不会回滚事务。
@Transactional(rollbackFor = MyException.class)
public void testTransactional2() throws Exception {
try {
dao1.save(entity1);
dao2.save(entity2);
arrayList.get(999999); // intentionally cause an exception
} catch (IndexOutOfBoundsException e) {
throw new MyException(ErrorCode.UNABLE_TO_INSERT, e);
}
}
dao1.save()
和dao2.save()
本身都带有@Transactional
注释。
当我检查数据库时,我看到两个实体都保留了。
答案 0 :(得分:-1)
注意:默认情况下,@ Transactional设置为仅在引发未经检查的异常时回滚。
与此同时删除您的throws子句,而是抛出MyException。