Spring 事物回滚

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

猜你喜欢

转载自keney-oak.iteye.com/blog/2396945