起因

再若依上新开了一个子项目,子项目用没有和若依项目用同一个库.

蛋似呢,子项目偷了懒,也想用admin项目的字典表,所以每次查询的时候都会切换数据源.

这样普普通通的用没啥问题,可是如果是子项目的server方法且还开启了事务,再切换数据源查询字典表的话就GG了.好像是同一个事务下无法用多数据源,貌似是事务缓存了啥,切不过去.

解决方法

一个事务下无法使用多数据源,那就再开个事务喽.

我是这么解决的.

将需要切换数据源的方法复制一个,并打上两个注解.
@Transactional(propagation = Propagation.REQUIRES_NEW) // 开启新事务
@DataSource(value = DataSourceType.SUBMETERDATA) // 切换的数据源

这样,调用这个打上了注解的方法就OK啦.

下图是某方法的样例
在这里插入图片描述

Logo

快速构建 Web 应用程序

更多推荐