具有多个持久性单元的Spring JpaRepositories

时间:2014-01-14 00:00:39

标签: spring spring-data spring-data-jpa

我有一个多模块Spring应用程序,其中每个模块(jar)都包含自己的persistence.xml。

在jar 1中<​​/ p>

的persistence.xml

<persistence-unit name="pu_one" transaction-type="RESOURCE_LOCAL">
    ...
</persistence-unit>

EntityOne.java

@Entity
public class EntityOne {
}

EntityOneRepository.class

interface EntityOneRepository extends JpaRepository<EntityOne, Long> {

} 

在jar 2中: 的persistence.xml

<persistence-unit name="pu_two" transaction-type="RESOURCE_LOCAL">
    ...
</persistence-unit>

EntityTwo.java

@Entity
public class EntityTwo {
}

EntityTwoRepository.class

interface EntityTwoRepository extends JpaRepository<EntityTwo, Long> {

} 

然后我使用org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager将它们放在一起。

我的问题是关于JpaRepositories,因为它们使用默认持久性单元,如DefaultPersistenceUnitManager的配置中所定义。

问题。如何指示每个存储库使用正确的持久性单元?

1 个答案:

答案 0 :(得分:0)

我最终使用

org.springframework.data.jpa.support.MergingPersistenceUnitManager

而不是

org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager

然后,不同jar中的所有实体将合并为一个持久性单元。诀窍是将所有持久性单元命名为相同。

但是,我更愿意通知每个存储库使用哪个持久性单元,这暂时适用。