我正在尝试使用innerjoin查询+ JPA nativesql从同一数据库服务器中的两个不同模式(逻辑数据库)的两个不同表中获取数据。如何将多个数据源注入同一实体管理器?
我的配置文件如下
<bean id="userDataSource" class="org.jdbcdslog.DataSourceProxy">
<description>Data source for User database</description>
<property name="targetDSDirect">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/cUser" />
<property name="resourceRef" value="true" />
</bean>
</property>
</bean>
<bean id="masterDataSource" class="org.jdbcdslog.DataSourceProxy">
<description>Data source for User database</description>
<property name="targetDSDirect">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/Master" />
<property name="resourceRef" value="true" />
</bean>
</property>
</bean>
<bean id="entitymanager" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation"
value="classpath:com/jpa_persistence.xml" />
<property name= "persistenceUnitName" value= "CP"/>
<property name="dataSource" ref="userDataSource" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="jpaPropertyMap">
<map>
<entry key="eclipselink.weaving" value="false"/>
</map>
</property>
</bean>
答案 0 :(得分:0)
我知道的大多数数据库引擎不需要这些邪恶的双重数据源技巧,您只需授予对同一用户的两个模式的读取(或写入)访问权限即可。
通过这种方式,用户将可以访问这两种模式并能够交叉查询。
最后使用Entity
注释定义要使用的模式
@Entity
@Table(name = "author", schema = "bookstore")
public class Author { ... }