java - Spring Boot - 配置了两个数据源 - 如何使用第二个数据源?

标签 java mysql jpa spring-boot spring-data

我已经在我的 Spring Boot 中配置了 MySQL 数据库的两个模式。应用程序并将一个数据源标记为主要数据源。

现在,我的问题是如何“使用”第二个数据源?我正在使用JpaRepository基于方法,当我尝试将某些内容保存到驻留在第二个数据库模式中的表中时,我的 Spring boot 应用程序总是尝试在第一个数据库模式中找到该表,并最终抛出表不存在错误。

附注我在我的 Entity 中标记了第二个数据库模式正确分类。

下面是我的application.properties文件(前缀已更改以省略 secret 名称):

# source 1
myframework.data.sql.connections.dataSource.url=jdbc:mysql://localhost:3306/schema1?autoReconnect=true&useSSL=false&rewriteBatchedStatements=true
myframework.data.sql.connections.dataSource.user=root
myframework.data.sql.connections.dataSource.password=root
myframework.data.sql.connections.dataSource.driver-class-name=com.mysql.jdbc.Driver
myframework.data.sql.connections.dataSource.config.preferredTestQuery=select 1 from dual

# source 2
myframework.data.sql.connections.master.url=jdbc:mysql://localhost:3306/schema2?autoReconnect=true&useSSL=false&rewriteBatchedStatements=true
myframework.data.sql.connections.master.user=root
myframework.data.sql.connections.master.password=root
myframework.data.sql.connections.master.driver-class-name=com.mysql.jdbc.Driver

最佳答案

在此博客上找到解决方案 - ScatterCode

解决方法是必须将应用程序配置类拆分为两个,并使用如下所示的内容对每个类进行注释:

配置类别 1:

@Configuration
@EnableTransactionManagement
@EnableConfigurationProperties({ MyServicefacadeProperties.class })
@EnableJpaRepositories(entityManagerFactoryRef = "myEntityManagerFactory", transactionManagerRef = "myTransactionManager", basePackages = {
    "com.myorg.foo" })

配置类别 2:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "masterEntityManagerFactory", transactionManagerRef = "masterTransactionManager", basePackages = {
            "com.myorg.foo.master" })

一个数据源应驻留在第一个配置类中,第二个数据源应驻留在另一个配置类中。另外,将 Entity 类和 JpaRepository 接口(interface)移动到相应的包中,如上面注释中所示。

干杯

关于java - Spring Boot - 配置了两个数据源 - 如何使用第二个数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46270543/

相关文章:

java - Talend tExtractXMLField

java - java.lang.Double 的缓存

java - 5分钟后执行一个方法,忽略jsp中的重新加载

java - Java中不插入MySQL数据库

php - 我如何使用 php 检索段落的匹配字符串

java - 并发 findAndModify 查询成功更新同一文档

python - 绘制直方图 : How can I do it from scratch using data stored in a database?

java - 没有名为 EntityManager 的持久性提供程序...错误

java - 简单的 Hibernate 映射问题

hibernate - JPA Hibernate 调用 Postgres 函数无效返回映射异常 :