【问题标题】:Persistence.xml where to put in eclipse projectPersistence.xml 放置在 eclipse 项目中的位置
【发布时间】:2011-09-09 11:39:31
【问题描述】:

简单的问题...
我在 Eclipse 环境中有几个项目
MainApp(Enterprise Application Project) 其中“包含”

  1. WebController(EJB 项目)
  2. WebModel(JPA 项目)
  3. WebView(动态 Web 项目)


问题是把persistance.xml 文件放在哪里?

获取异常: java.lang.IllegalStateException:无法为 unitName DataModel 检索 EntityManagerFactory

【问题讨论】:

    标签: eclipse jpa glassfish ejb persistence.xml


    【解决方案1】:

    persistence.xml 文件通常位于持久性 (JPA) 项目的 src/META-INF 目录中。如果项目是使用 Eclipse 创建的,则通常会默认创建并放置在该项目中。

    【讨论】:

      【解决方案2】:

      第 8.2 节中的JPA 2.0 specification 说明了包装要求。它说

      持久性单元由 持久性.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.

      如果您认为有必要,您可以阅读本章的其余部分。在 Eclipse 中,这意味着您需要配置项目之间的依赖关系,以确保正确打包部署文件。您通常在 Projects 选项卡中的 Project->Properties->Build Path 中进行配置。

      但是,我不确定 Eclipse 是否根据 Web 服务器部署的需要将其打包。我知道它在 EAR 项目中。

      【讨论】:

        【解决方案3】:

        对于 JPA 项目甚至普通的 Java 项目,您只需要在 src 下创建 META-INF 文件夹并在其中添加 persistence.xml 即可。就这样。现在在 jvm 中加载应用程序时会自动获取它。

        project structure

        【讨论】:

          猜你喜欢
          • 2017-05-06
          • 2012-07-24
          • 2018-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-02
          相关资源
          最近更新 更多