有时候事物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);//抛出异常
??? ??? }
??? }
?
?
?
?