11

简单的问题......
我在 Eclipse 环境
MainApp(企业应用程序项目)中有几个项目,其中“包括”

  1. WebController(EJB 项目)
  2. 网络模型(JPA 项目)
  3. WebView(动态 Web 项目)


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

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

4

3 回答 3

14

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

于 2011-06-06T21:51:23.460 回答
13

第 8.2 节中的JPA 2.0 规范说明了封装的要求。它说

持久性单元由 persistence.xml 文件定义。META-INF 目录包含persistence.xml 文件的jar 文件或目录称为持久单元的根。

在 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 项目中。

于 2011-06-07T09:59:51.077 回答
-1

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

项目结构

于 2019-08-05T18:09:02.073 回答