为什么以下代码事务不会生效?
@Transactional
public String insert() {
try {
//新增一条数据
jdbcTemplate.update("insert into userinfo values (? , ?)" , "5" , "5");
//显示抛出异常
int a = 1/0;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
为什么以下代码事务会生效
@Transactional
public String insert() {
try {
//新增一条数据
jdbcTemplate.update("insert into userinfo values (? , ?)" , "5" , "5");
//显示抛出异常
int a = 1/0;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return "";
}
原因是被try-catch中的异常会被catch捕获到 ,而被catch捕获到异常之后,事务就捕获不到异常了,所以会出现问题,
如何解决? 就是在catch 中再显式抛出一个异常 (但是不建议使用,而是应该在方法体后面抛出异常 ,在控制层再做异常处理)