2011-04-28 192 views
0

我有一个处理多个EntityManager的应用程序,我想用它的entityManager映射每个实体。我如何映射这些实体?使用EntityManager映射实体

需要考虑的一点:我有一个EntityManagerFactory,并且在该工厂创建了许多EntityManagers。然后,我为每个用户创建一个新的EntityManager登录。我需要的是标识与每个EntityManager相关的实体。

回答

0

在最简单的情况下,如果类是正确annonated它看起来是这样的:

<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> 

但是,如果你想同一个类映射到指向不同databses,并且具有不同的表二EntityManagers /列名称,然后注释不会帮助。如果这是您将不得不使用xml映射至少一个表的类(并且可能希望使用注释映射其他表)。 xml映射覆盖注释。

我们有类似的情况,我们必须将相同的实体映射到两个不同的模式。我们使用两个xmls将同一个实体映射到两个不同的表,而不是映射到具有注释的实体和其他具有xml的实体,以避免任何混淆和/或含糊不清。

+0

对不起,如果我想念你带我的问题。我有一个EntityManagerFactory和该工厂创建了许多EntityManagers。然后,我创建一个新的EntityManager每个用户登录。我需要的是确定与每个EntityManager相关的实体 – 2011-04-28 16:45:07

+2

您不需要创建EntityManager每个用户登录到您的系统然后跟踪实体管理者。管理这个的最好方法是使用Spring在需要的时候在持久性类中注入EntityManager。 – kunal 2011-04-28 17:12:07