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

 

错误调用方式:

@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调用,即可。

查看原文