猿问

service层的事物无法回滚

我在service层调用多个dao层方法,到用mybatis代理,其中一个出现问题之前的不回滚

@Override

    @Transactional(isolation=Isolation.DEFAULT, propagation=Propagation.REQUIRED, 

        rollbackFor=UserException.class)

    public boolean saveUser(RegistUserDTO newUser) throws UserException{

。。。。。。

    UserBasePO userBasePO = new UserBasePO();

        UserProfilePO userProPO = new UserProfilePO();

        UserAuthenticatorPO userAuthPO = new UserAuthenticatorPO();

        //将DTO转PO传DAO层

        //先操作主表

        dozerMapper.map(newUser, userBasePO);

        userBasePO.setNickname(newUser.getIdentity());

        userBasePO.setAvtor("//");

        userBasePO.setUserScore(0);

        userBasePO.setUserGrade(0);

        int saveUserBaseResult = dao.saveUserBase(userBasePO);

        if(1==1){

            //throw new RuntimeException();

            throw new UserException("存入新用户失败!");

        }

当抛出异常时不回滚,比如正在插入的是id该是19,由于抛出异常,没有插入,把异常去掉,插入数据的id是20.

尚方宝剑之说
浏览 911回答 2
2回答

慕森王

你这个这是抛异常,并没有写rollback的代码
随时随地看视频慕课网APP

相关分类

Java
我要回答