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无法进行切换从库,目前解决方案就是不在有事务的业务类中进行主从库切换。

相关推荐
咖啡八杯36 分钟前
GoF设计模式——解释器模式
java·后端·spring·设计模式
GuWenyue42 分钟前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
优橙教育1 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵1 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔2 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
Miao121313 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
CodexDave3 小时前
MySQL事务隔离级别与MVCC机制解析
前端·数据库·mysql·nginx·性能优化·负载均衡
碎光拾影3 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
曾阿伦3 小时前
MongoDB 查询语句备忘手册
数据库·mongodb