简单的问题......
我在Eclipse环境中有一些项目
MainApp(企业应用项目)“包括”
问题是将persistance.xml文件放在哪里?
获得例外: java.lang.IllegalStateException:无法为unitName DataModel检索EntityManagerFactory
答案 0 :(得分:14)
第8.2节中的JPA 2.0 specification说明了包装的要求。它说
持久性单元由a定义 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项目中有效。
答案 1 :(得分:12)
persistence.xml文件通常存在于持久性(JPA)项目的src/META-INF
目录中。如果项目是使用Eclipse创建的,则通常会创建它并将其放置在那里。
答案 2 :(得分:-1)
对于JPA项目,甚至对于普通的Java项目,您只需要在src下创建META-INF文件夹并在其中添加persistence.xml。就这样。现在,在将应用程序加载到jvm中时,将自动获取它。