项目场景:
提示:这里简述项目相关背景:
一块儿业务中,会出现业务中切换数据库的情况,在应用事务时可能会导致的切换数据源失败
问题描述
提示:这里描述项目中遇到的问题:
@Transactional( rollbackFor = Exception.class)
public void deleteTask(String taskNo) {
Task task = this.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, taskNo));
this.update(Wrappers.<Task>lambdaUpdate().set(Task::getDelFlag, 0).eq(Task::getTaskNo, taskNo)); lawcasePortraitHandleService.run(Arrays.asList(LawcasePortraitHandleConst.TypeEnum.sandtableData), task.getLawcaseId());
}
会出现找不到表的报错:
原因分析:
发现数据表存在,但是数据库的选择有问题,排查发现mapper里用的数据源是对的,并尝试手动切换数据源,仍旧无法解决问题。发现用了事务的注解@Transactional,可能是事务导致数据源切换失败
解决方案:
提示:这里填写该问题的具体解决方案:将注解@Transactional( rollbackFor = Exception.class)更换为@DSTransactional即可。