当前位置: 首页 > 知识库问答 >
问题:

当持久性单元处于EAR级别时,未映射实体

沈健
2023-03-14

我需要一个EAR java应用程序,在其中我可以定义一个持久性单元,并在不同的组件中使用该持久性单元。例如:我在我的application.xml中定义了两个JAR:my-product . JAR和my-product-module . JAR——这两个JAR文件应该能够使用同一个PersistenceUnit。这个PersistenceUnit是在一个单独的jar中定义的,这个jar是我的EAR应用程序的lib文件夹。在JAR文件中,没有其他的persistence.xml,所以在整个EAR文件夹中:只有一个persistence.xml。

我目前有以下 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 中)?有人能帮助我们吗?

共有1个答案

危斯伯
2023-03-14

我们的解决方案是创建一个自定义ANT任务,该任务使用@Entity注释所有类(使用反射)。这将生成持久性。xml,带有和节点。因此,需要在persistence.xml中列出要映射到PersistenceContext的每个类。这种坚持。xml放在一个文件夹META-INF中,该文件夹被打包到my-persistence.jar中。这个jar放在EAR的lib文件夹中。

 类似资料:
  • 我正在编写一个独立的java应用程序,从Maven项目构建它并通过调用jar文件执行。 在应用程序中,我有一个实体管理器,它使用在我的持久性中定义的持久性单元。xml是独立的(事务类型=“RESOURCE\u LOCAL”) 实际的实体注释类来自另一个项目,因此被添加到pom中。xml文件作为依赖项。 问题是持久性。包含实体类的项目的xml覆盖了实际独立应用程序的持久性。构建jar时,jar目标文

  • 我正在使用WildFly8.1和一个包含实体的EJB项目(EJB3.2)。当尝试将实体管理器注入到我的一个bean中时,我得到了以下信息: 这是我尝试注入EntityManager的SessionBean: 我指定了以下文件,并将其放入“project-name”/ejbmodule/meta-inf。 类似问题及其解决方法 找不到持久性单元建议包含persistence.xml 在Wildfly

  • 我有两个这样的 JPA 实体: 如您所见, 字段在 和 之间形成了多对多关系,因此我认为使用 来指定字段的级联是合适的。但是,当尝试在映射中保留具有几个 值的 时,我得到以下异常: 显然,EclipseLink 不会级联我的 实例的持久性。我应该如何注释 以使级联持久工作?

  • persistenceException:DB2 SQL错误:sqlcode=-206,sqlstate=42703,sqlerrmc=t0.id,driver=3.52.95{prepstmnt 1029586270

  • 日安!< br >我正在试用corda版令牌SDK 1.1版,并希望尝试发行/兑换自定义可替换令牌的各种方案。 我编写了一个简单的流程,描述了参与方自身的令牌颁发:< br >虽然非常基本的流程看起来工作得很好,但是在子流程(IssueTokensFlow)中,尝试将PersistentFungibleToken保存到数据库(下面是堆栈跟踪)。我试图实现自己的模式,但没有成功,因为函数suppor