Spring - 具有不同JPA提供程序的两个持久性单元

时间:2015-03-03 13:54:01

标签: spring hibernate eclipselink spring-data-jpa persistence-unit

是否可以有两个持久性单元,一个使用Hibernate与一些实体一起工作,另一个使用EclipseLink与Spring框架中的其他实体一起工作?

1 个答案:

答案 0 :(得分:0)

以下内容应该有效:

<bean id="schema1EM" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  ...
  <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
      ...
    </bean>
  </property>
  <property name="packagesToScan" value="org.example.domain.schema1"/>
</bean>

<bean id="schema2EM" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  ...
  <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
      ...
    </bean>
  </property>
  <property name="packagesToScan" value="org.example.domain.schema2"/>
</bean>

<jpa:repositories base-package="org.example.data.schema1" entity-manager-factory-ref="schema1EM"/>
<jpa:repositories base-package="org.example.data.schema2" entity-manager-factory-ref="schema2EM"/>

schema1EM将分配给在org.example.data.schema1包下声明的所有存储库,schema2EM将分配给org.example.data.schema2下的所有存储库。您必须按包隔离域类和存储库接口,以便Spring自动连接可以工作。