调用本类中的方法,事务回滚失败的问题。

 

错误调用方式:

@Service
public class BaseServiceImpl implements BaseService {
    
    @Override
    @Transactional
    public void saveBaseInfo() {
        BaseRequestBean baseRequestBean = new BaseRequestBean();
        saveA(baseRequestBean);
        saveB();
    }


    private void  saveA(BaseRequestBean baseRequestBean){
        baseDao.insert(baseRequestBean);
    }


    private void  saveB(){
        base222Dao.insert();
    }
}

 

错误原因:

调用方法saveA  和  saveB  是通过 实例对象调用的,而非Spring代理的Bean。

 

 

 

正确调用方法:

@Service
public class BaseServiceImpl implements BaseService {

    @Autowired
    BaseServiceImpl baseService;

    @Override
    @Transactional
    public void saveBaseInfo() {
        BaseRequestBean baseRequestBean = new BaseRequestBean();
        baseService.saveA(baseRequestBean);
        baseService.saveB();
    }


    private void  saveA(BaseRequestBean baseRequestBean){
        baseDao.insert(baseRequestBean);
    }


    private void  saveB(){
        base222Dao.insert();
    }
}

 

原因:

通过注入Bean调用,即可。

相关文章:

  • 2021-11-22
  • 2022-12-23
  • 2021-06-09
  • 2021-07-01
  • 2021-11-05
猜你喜欢
  • 2021-07-30
  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
相关资源
相似解决方案