Я пытаюсь использовать как hibernate orm, так и ogm в одном приложении. В моем persistence.xml
у меня есть два persistence-unit
:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="orm-mysql">
...
<class>...</class>
...
<class>...</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
...
</persistence-unit>
<persistence-unit name="ogm-mongodb" transaction-type="JTA">
...
<class>...</class>
...
<class>...</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
...
</persistence-unit>
...
</persistence>
Я хочу использовать нативный API hibernate orm как с 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 и ogm, которые включены в orm-mysql
и ogm-mongo
.
Во второй раз все в порядке, я получаю только классы ogm-mongo
.
Не могу понять в чем дело, есть идеи?