Java开发日志-双数据库事务问题

这里在yaml配置了两个远程数据库

复制代码
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 主库数据源
      master:
        driverClassName: com.mysql.cj.jdbc.Driver
        url: xxxx
        username: DB1
      # 从库数据源
      slave:
        enabled: true
        driverClassName: com.mysql.cj.jdbc.Driver
        url: xx
        username: DB2

当我在Service业务类(关联的主数据库中的表)中需要调用从库的Service业务时,

类似于下边这种情况

java 复制代码
@Transactional
public class 主库Service{

    @Autowired
    private 从库Service 从库Service;

    public void xxx() {
       Long id = 从库Service.selectPurchasePriceListVOById(id);
    }
}

这里在调用从库Service函数想要获取ID时,会报错返回无法找到对应的数据表(从库开关正常打开状态)就是找不到对应的数据表。

临时解决方案:(从Controller层进行调用)如下

java 复制代码
public class xxController extends BaseController
{
    @Autowired
    private 从库Service 从库Service;

    @Autowired
    private 主库Service 主库Service;

    public viod xxx(){
        Long id = 从库Service.getId();
        主库Service.xxx(id);
    }
    
}

分析问题:因为主Service添加了事务,导致从库的Service无法进行切换从库,目前解决方案就是不在有事务的业务类中进行主从库切换。

相关推荐
输出输入4 小时前
前端核心技术
开发语言·前端
薛定谔的猫喵喵5 小时前
天然气压力能利用系统综合性评价平台:基于Python和PyQt5的AHP与模糊综合评价集成应用
开发语言·python·qt
yuluo_YX5 小时前
Reactive 编程 - Java Reactor
java·python·apache
独好紫罗兰5 小时前
对python的再认识-基于数据结构进行-a004-列表-实用事务
开发语言·数据结构·python
gjxDaniel5 小时前
Objective-C编程语言入门与常见问题
开发语言·objective-c
山岚的运维笔记5 小时前
SQL Server笔记 -- 第20章:TRY/CATCH
java·数据库·笔记·sql·microsoft·sqlserver
Gain_chance5 小时前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码
数据库·数据仓库·hive·笔记·学习·datagrip
choke2335 小时前
[特殊字符] Python异常处理
开发语言·python
云中飞鸿5 小时前
linux中qt安装
开发语言·qt