RuoYi若依事务内切换多数据源失效BUG

起因

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

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

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

解决方法

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

我是这么解决的.

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

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

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

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Ruoyi Cloud中使用多数据源,你可以按照以下步骤操作: 1. 首先,在你的项目中添加多个数据源的配置。可以在`application.yml`中配置多个数据源的相关信息,例如数据库连接等。举例来说,可以配置两个数据源:`primary`和`secondary`。 2. 在你的项目中创建多个数据源的配置类。你可以通过创建多个`DataSourceConfig`类来配置每个数据源的连接池等属性。例如,你可以创建`PrimaryDataSourceConfig`和`SecondaryDataSourceConfig`两个类,分别对应上面配置的两个数据源。 3. 在你的项目中创建多个数据源的实例。通过使用`@Bean`注解,分别在每个数据源配置类中创建对应的数据源实例。例如,你可以在`PrimaryDataSourceConfig`中创建一个名为`primaryDataSource`的`DataSource`实例。 4. 在你的项目中配置事务管理器。通过使用`@Primary`和`@Bean`注解,分别在每个数据源配置类中创建对应的事务管理器实例。例如,你可以在`PrimaryDataSourceConfig`中创建一个名为`primaryTransactionManager`的事务管理器实例。 5. 在需要使用多数据源的地方,使用`@Qualifier`注解来指定具体要使用的数据源。例如,如果需要使用`primary`数据源,可以在对应的DAO或Service类上使用`@Qualifier("primaryDataSource")`注解来指定使用该数据源。 通过以上步骤,你就可以在Ruoyi Cloud中配置和使用多个数据源了。记得按照自己的实际需求进行具体配置和调整。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值