有时候事物Spring 事物不回滚 注意点
假设 methodA 函数 里面调用除了自己的业务逻辑 还有 methodB 方法
1 想要回滚 try catch 中抛出 一个异常(默认是运行时异常)
2 增加 @Transactional(readOnly = false,rollbackFor = Exception.class)
3 两个方法都要抛出异常 要么 1自己捕获抛出,2要么向上抛出
/***
* 第1业务个sql
*/
@Transactional(readOnly = false,rollbackFor = Exception.class)
public void methodA() {
try {
//update 修改SQL1业务
String a = "UPDATE TABLE1 SET FirstName = 'Fred' WHERE LastName = 'Wilson'";
this.methodB();//修改SQL2
} catch (Exception e) {
throw new RuntimeException();//抛出异常
}
}
/**
* 第二个业务sql
*/
public void methodB() {
try {
// update 修改SQL2业务
String b = "UPDATE TABLE2 SET FirstName = 'Fred' WHERE LastName = 'Wilson'";
} catch (Exception e) {
throw new RuntimeException(e);//抛出异常
}
}