如何通过XML在Spring Data JPA(而不是Boot)中配置多个数据源?
以下是我添加到applicationContext.xml
文件中的两个数据源:
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="MAINDS"/>
</bean>
<bean id="secondDataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="SECONDARYDS"/>
</bean>
如您所见,一个数据源的ID为dataSource
,而另一个数据源的ID为secondaryDataSource
。
出于某种原因,我的应用程序只看到id为dataSource
的数据源,并且它永远不会识别具有不同id的任何其他数据源。
我正在使用JNDI查找并在Weblogic服务器上部署应用程序。此外,以下是主数据源的其余配置:
<jpa:repositories
base-package="my.repository" />
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="databasePlatform"
value="org.eclipse.persistence.platform.database.OraclePlatform" />
<property name="database" value="ORACLE" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="jpaPropertyMap">
<map>
<entry key="eclipselink.weaving" value="false" />
</map>
</property>
<property name="packagesToScan"
value="my.package" />
</bean>
问题是,应用程序仅引用ID为dataSource
的数据源;它从不引用其他数据源。如果我尝试查询ID不同于dataSource
的数据源,我会得到Internal Exception: java.sql.SQLSyntaxErrorException
。