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

相关推荐
zhangjw343 分钟前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
lgcgkCQ16 分钟前
【AI 转型实战 1】SpringAI 入门:搭建基础大模型对话能力
java·ai·agent·rag·spring ai·mcp·langchain4j
王中阳Go17 分钟前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
Wang's Blog21 分钟前
Java 项目实战:交友项目 - 用户体系集成总结
java·开发语言·交友
学到老活到老29 分钟前
第 24 集:配置文件写了 80,Spring Boot 为什么读到 90?
java·后端·spring
cnskylee42 分钟前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵43 分钟前
修改MySQL数据库递增序列【持续更新】
数据库·mysql
liminla!1 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法
tongyiixiaohuang1 小时前
供应商主数据同步实战:从易快报到金蝶云星空的单一策略落地
java·网络·数据库
中科三方1 小时前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php