2016-01-22 57 views
0

我試圖在同一個應用程序中同時使用hibernate的orm和ogm。 在我persistence.xml我有兩個persistence-unit從ORM和OGM獲取休眠持久性單元類

​​

我想使用Hibernate ORM本地API既ORM和OGM,所以我需要註解的類添加到兩個不同的MetadataSources
因爲我有持久單位我認爲我可以做到這一點:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("orm-mysql"); 
Set<ManagedType<?>> managedTypes = entityManagerFactory.getMetamodel().getManagedTypes(); 
for (ManagedType type : managedTypes) { 
    ormSources.addAnnotatedClass(type.getJavaType()); 
} 

entityManagerFactory = Persistence.createEntityManagerFactory("ogm-mongo"); 
managedTypes = entityManagerFactory.getMetamodel().getManagedTypes(); 
for (ManagedType type : managedTypes) { 
    ogmSources.addAnnotatedClass(type.getJavaType()); 
} 

的問題是,在第一次迭代中,ORM類,我得到了包括在orm-mysql兩個ORM和OGM類和ogm-mongo
第二次繞它很好,我只得到ogm-mongo類。

無法弄清楚什麼是錯的,有什麼想法嗎?

回答

0

在任何情況下使這個愚蠢的錯誤,以及,我有:

<persistence-unit name="orm-mysql"> 
    ... 
    <class>...</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 
    <properties> 
     <property name="hibernate.archive.autodetection" value="class"/> 
     ... 
    </properties> 
</persistence-unit> 

卸下hibernate.archive.autodetection特性解決了這個問題。