簡體   English   中英

在Spring Boot中無法訪問多個數據源

[英]Not able access multiple data sources in Spring boot

我是Spring&Spring引導的新手,我試圖訪問兩個數據源,但是我只能連接到一個數據源。

當我嘗試調用訪問第二個數據源的函數時,調用轉到第一個數據源,並且出現以下錯誤,

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表'testify.test'不存在

我已按照以下教程進行多數據庫訪問,並且我的代碼類似於Roufid鏈接中的代碼,

  1. 魯菲德
  2. Baeldung

有人可以指出我所缺少的內容或我在哪里做錯了嗎?

下面是代碼文件,

AConfig.java

@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "aEntityManager",
transactionManagerRef = "aTransactionManager",
basePackages = "test.serv")
public class AConfig {

@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource.adb")
public DataSource aDataSource() {
    return DataSourceBuilder.create().build();
}

@Primary
@Bean(name="aEntityManager")
public LocalContainerEntityManagerFactoryBean mysqlEntManFactory(EntityManagerFactoryBuilder build) {
    return build.dataSource(aDataSource()).persistenceUnit("aPU").build();
}

@Primary
@Bean(name="aTransactionManager")
public PlatformTransactionManager mysqlTransactionManager(@Qualifier("aEntityManager") EntityManagerFactory enManFact) {
    return new JpaTransactionManager(enManFact);
}
}

BConfig.java

@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "bEntityManager",
transactionManagerRef = "bTransactionManager",
basePackages = "test.serv")
public class BConfig {

@Bean
@ConfigurationProperties(prefix="spring.datasource.bdb")
public DataSource bDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name="bEntityManager")
public LocalContainerEntityManagerFactoryBean mysqlEntManFactory(EntityManagerFactoryBuilder build) {
    return build.dataSource(bDataSource()).persistenceUnit("bPU").build();
}

@Bean(name="bTransactionManager")
public PlatformTransactionManager mysqlTransactionManager(@Qualifier("bEntityManager") EntityManagerFactory enManFact) {
    return new JpaTransactionManager(enManFact);
}
}

persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
     version="2.0">
<persistence-unit name="aPU"  transaction-type="RESOURCE_LOCAL">
</persistence-unit>
<persistence-unit name="bPU" transaction-type="RESOURCE_LOCAL">
</persistence-unit>
</persistence>

Service.java

public interface Service extends CrudRepository<X, Integer> {
@Query(value = "select y from test where x = :x", nativeQuery = true)
List<Object[]> findByName(@Param("x") String x);
}

問題是您的存儲庫類( Service )在同一包中

@EnableJpaRepositories(entityManagerFactoryRef = "bEntityManager",
transactionManagerRef = "bTransactionManager",
basePackages = "test.serv")

basePackages =“ test.serv”

將其移至單獨的包裝中。 那應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM