我需要一個EAR Java應用程序,在該應用程序中可以定義持久性單元並在不同組件中使用該持久性單元。例如:我在我的application.xml中定義了2個JAR:my-product.jar和my-product-module.jar - 兩個JAR文件都應該能夠使用相同的PersistenceUnit。這個PersistenceUnit是在一個單獨的jar中定義的,它是我的EAR應用程序的lib文件夾。 在JAR文件中,沒有其他persistence.xml。所以在整個EAR文件夾中:只有1個persistence.xml。當持久化單元處於EAR級別時未映射實體EAR級別
我目前有以下的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文件元素沒有做它應該做的。
我們如何檢測我們的所有實體(在我們的兩個JAR中)? 有人能幫助我們嗎?
我建議你使用EJB項目,其中包含所有與持久性相關的數據,如實體。並將該jar添加到您所需的項目中。 –