Spring Data JPA - 如何在ApplicationContext.xml中配置多个数据源?

时间:2018-06-18 21:22:44

标签: database jpa spring-data-jpa spring-data datasource

如何通过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

编辑:任何人?

0 个答案:

没有答案