2016-01-22 56 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特性解决了这个问题。