两个EntityManager工厂

时间:2009-10-16 15:25:32

标签: java spring jpa

我希望有两个EntityManagerFactories(在这种情况下为org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean),每个都有自己的数据源和自己的持久对象集。

所以我需要能够将实体范围扩展到特定的实体管理器工厂。我不希望将实体名称硬编码到persistence.xml

当JPA扫描实体时,是否有某种方法可以在类路径扫描程序上放置过滤器?或者某种方式将实体连接到特定的持久性单元。

2 个答案:

答案 0 :(得分:1)

也许我误解了你想要的东西,但是......

通过为每个persistence units指定唯一名称来单独定义{{3}}。通过LocalContainerEntityManagerFactoryBean属性为每个persistenceUnitName实例指定所述名称。

答案 1 :(得分:0)

您的2个PU将具有相同的类(域对象),但它们通过您为2个不同的工厂bean提供的PU名称进行区分,并将它们注入到您的相应DAO中。现在,如果您使用Hibernate作为JPA提供程序,那么您可以定义

<property name="hibernate.archive.autodetection" value="class,hbm" />

让您的工厂自动扫描实体的类路径(使用 hbm ,具体取决于您是使用注释还是hbm文件),然后您不必明确列出你的课程。