Persistence.xml放在eclipse项目中的位置

时间:2011-06-06 17:23:12

标签: eclipse jpa glassfish ejb persistence.xml

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

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

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

    获得例外: java.lang.IllegalStateException:无法为unitName DataModel检索EntityManagerFactory

3 个答案:

答案 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中时,将自动获取它。

project structure