我有一个多模块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的配置中所定义。
问题。如何指示每个存储库使用正确的持久性单元?
答案 0 :(得分:0)
我最终使用
org.springframework.data.jpa.support.MergingPersistenceUnitManager
而不是
org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager
然后,不同jar中的所有实体将合并为一个持久性单元。诀窍是将所有持久性单元命名为相同。
但是,我更愿意通知每个存储库使用哪个持久性单元,这暂时适用。