我有一个处理多个EntityManager的应用程序,我想用其entityManager映射每个实体。我如何映射这些实体?
需要考虑的一点:我有一个EntityManagerFactory,并且在该工厂中我创建了许多EntityManagers。然后,我为每个用户登录创建一个新的EntityManager。我需要的是识别与每个EntityManager相关的实体。
答案 0 :(得分:0)
在最简单的情况下,如果你的课程被正确地宣布,那么它将类似于:
<persistence-unit name="EntityManager1" transaction-type="...">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.somepackage.ClassOne</class>
<class>org.somepackage.CassTwo</class>
</persistence-unit>
<persistence-unit name="EntityManager2" transaction-type="...">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>org.somepackage.ClassThree</class>
<class>org.somepackage.CassFour</class>
</persistence-unit>
但是,如果要将同一个类映射到指向不同数据库且具有不同表/列名称的两个EntityManagers,那么注释将无济于事。如果是那个类,你将不得不使用xml映射至少表(并且可能希望使用注释来映射其他表)。 xml映射会覆盖注释。
我们有类似的场景,我们必须将相同的实体映射到两个不同的架构。我们使用两个xmls将相同的实体映射到两个不同的表,而不是映射到带注释的一个和xml的其他表,以避免任何混淆和/或模糊。