Persistence.xml放在eclipse项目的哪里

发布于 2024-11-14 12:35:34 字数 303 浏览 2 评论 0原文

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

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


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

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

Simple question...
I have a few projects in Eclipse enviroment
MainApp(Enterprise Application Project) which "includes"

  1. WebController (EJB Project)
  2. WebModel (JPA Project)
  3. WebView(Dynamic Web Project)

Problem is where to put persistance.xml file?

Getting exception:
java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName DataModel

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

沙沙粒小 2024-11-21 12:35:34

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

The persistence.xml file is typically present in the src/META-INF directory of the persistence (JPA) project. If the project was created with Eclipse, it is typically created and placed there by default.

凉城已无爱 2024-11-21 12:35:34

JPA 2.0 规范第 8.2 节规定了打包要求。它说

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

如果您认为有必要,可以阅读本章的其余部分。在 Eclipse 中,这意味着您需要配置项目之间的依赖关系,以确保部署文件被正确打包。您通常在“项目”选项卡的“项目”->“属性”->“构建路径”中进行配置。

但是,我不确定 Eclipse 是否按照 Web 服务器部署的要求将其打包。我知道在 EAR 项目中确实如此。

The JPA 2.0 specification in section 8.2 states the requirements for packaging. It says

A persistence unit is defined by a
persistence.xml file. The jar file or
directory whose META-INF directory
contains the persistence.xml file is
termed the root of the persistence
unit.

In Java EE environments, the root of a
persistence unit must be one of the
following:

  • an EJB-JAR file
  • the WEB-INF/classes directory of a WAR file[80]
  • a jar file in the WEB-INF/lib directory of a WAR file
  • a jar file in the EAR library directory
  • an application client jar file

It is not required that an EJB-JAR or
WAR file containing a persistence unit
be packaged in an EAR unless the
persistence unit contains persistence
classes in addition to those contained
within the EJB-JAR or WAR. See Section
8.2.1.6.

You can read the rest of the chapter if you deem it necessary. In Eclipse that means that you need to configure the dependencies between your projects to ensure the deployment files are packaged appropriately. You typically configure that in Project->Properties->Build Path in the Projects tab.

However, I am not sure if Eclipse packages it up as required for Web server deployment. I know it does in a EAR project.

八巷 2024-11-21 12:35:34

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

项目结构

For JPA project or even for normal Java project, you just need to create META-INF folder under the src and add the persistence.xml there. That's all. now at the time of application loading in the jvm it will automatically be fetched.

project structure

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文