持続性ユニットを定義し、その持続性ユニットをさまざまなコンポーネントで使用できる EAR Java アプリケーションが必要です。例: application.xml で 2 つの JAR を定義します: my-product.jar と my-product-module.jar - 両方の JAR ファイルが同じ PersistenceUnit で動作できる必要があります。この PersistenceUnit は、EAR アプリケーションの lib フォルダーである別の jar で定義されています。JAR ファイルには、他の persistence.xml はありません。したがって、EAR フォルダー全体で、persistence.xml は 1 つだけです。
現在、次のEAR構造を持っています。JBoss 6.1.0.Final サーバーにデプロイしています。
/
-- lib
| |
| -- my-persistence.jar
| |
| -- META-INF
| |
| -- persistence.xml
-- my-product.jar
|
-- my-product.war
|
-- my-product-module.jar
私のpersistence.xmlは次のようになっています:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="MyPersistenceUnitName">
<jta-data-source>java:/MyDatasource</jta-data-source>
<jar-file>../my-product.jar</jar-file>
<jar-file>../my-product-module.jar</jar-file>
<properties>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/MyProduct/ManagerFactory" />
<property name="jboss.entity.manager.jndi.name" value="java:/MyProduct/EntityManager" />
</properties>
</persistence-unit>
</persistence>
これはすべて正常に機能しています。持続性ユニットは検出され、EAR コンテキスト内で制限されます。しかし、JPA クエリを作成し、EntityManager にクエリの実行を依頼した瞬間から、次のエラーが発生します。
org.hibernate.hql.ast.QuerySyntaxException: MyEntity is not mapped [from MyEntity]
そのため、アプリケーションがロードされたときに、すべてのエンティティがマップ/検出されません。jar-file 要素がすべきことをしていないようです。
(両方の JAR で) すべてのエンティティを検出するにはどうすればよいでしょうか? 私たちを助けてくれる人はいますか?