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

相关推荐
Beyond_System|系统之外14 分钟前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙552337 分钟前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
哈__40 分钟前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes
wno7041 小时前
Spring Security权限控制
java·python·spring
杨运交2 小时前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow2 小时前
CountDownLatch in Java
java
IvorySQL2 小时前
IvorySQL 5.6 发布:PG 18.6 内核升级,沙盒即开即用
数据库·人工智能·postgresql
SL_staff2 小时前
从RBAC到场景化授权:《无忧·企业文档》三级权限模型的技术实践解析
java·开源·产品
CNSSIRD数据库3 小时前
中国企业环境信用数据库2003-2026
大数据·数据库·数据分析·论文笔记
传奇开心果编程3 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习