【问题标题】:How to scan Entity in EJB module如何扫描 EJB 模块中的实体
【发布时间】:2018-03-09 11:29:00
【问题描述】:

我有一个结构如下的 ear 文件。 [ejb-1.jar] 和 [ejb-2.jar] 都包含 EBJ bean 和实体类。 但是,当我尝试将其部署到服务器时,JPA 不会扫描我在 ejb jar 文件中的实体。 谁能告诉我如何配置persistence.xml文件?

耳朵

-- lib(文件夹)

-------- log4j.jar (ex)

-- ejb-1.jar

-- ejb-2.jar

-- app.war

-- 元信息(文件夹)

-------- persisetence.xml

【问题讨论】:

    标签: java jpa ear persistence.xml


    【解决方案1】:

    将persistence.xml 放在每个EJB jar 文件内的META-INF 中。

    你也可以使用标签来指向特定的 jars 持有实体。

    根据第 8.2 节 JPA 规范:

    在 Java EE 环境中,EJB-JAR、WAR、EAR 或应用程序 客户端 JAR 可以定义一个持久性单元。任意数量的持久性 单位可以在这些范围内定义。一个持久性单元可能是 打包在一个或多个包含在 WAR 或 EAR 中的 jar 文件中, 作为 EJB-JAR 文件或 WAR 类中的一组类 目录,或作为下面定义的这些的组合。一种 持久性单元由 persistence.xml 文件定义。 jar 文件或 META-INF 目录包含 persistence.xml 文件的目录 称为持久单元的根。在 Java EE 环境中, 持久性单元的根必须是以下之一:

    • 一个 EJB-JAR 文件
    • WAR 文件的 WEB-INF/classes 目录[80]
    • WAR文件的WEB-INF/lib目录下的jar文件
    • EAR库目录下的jar文件
    • 应用程序客户端 jar 文件不是

      要求包含持久性单元的 EJB-JAR 或 WAR 文件 打包在 EAR 中,除非持久性单元包含持久性 除了 EJB-JAR 或 WAR 中包含的类之外的类。看 第 8.2.1.6 节。

    【讨论】:

    • 谢谢。我正在检查文档,但我需要列出 persistence.xml 中的所有类吗?如果我有一个将使用 [ejb-2.jar] 实体的 [ejb-3.jar] 会有什么问题吗?
    • @QuangDuy 如果你想要交叉引用,你将不得不使用 stackoverflow.com/questions/4433341/…
    • 谢谢,我正在尝试将 persistence.xml 移至 [ejb-persistence.jar]。然后使用 将 [ejb-1.jar] 和 [ejb-2.jar] 添加到持久化中。它现在工作:)
    猜你喜欢
    • 2016-01-23
    • 2014-12-11
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2016-02-11
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多