同じアプリケーションで hibernate の orm と ogm の両方を使用しようとしています。私persistence.xml
には2つあり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>
orm と ogm の両方で休止状態の orm ネイティブ API を使用したいので、注釈付きのクラスを 2 つの異なる .xml に追加する必要があります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-mysql
問題は、orm クラスの最初の繰り返しで、 andに含まれる orm クラスと ogm クラスの両方を取得することogm-mongo
です。
2回目は問題ありませんが、ogm-mongo
クラスのみを取得します。
何が悪いのかわからない、何かアイデアはありますか?