2011-04-28 193 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