Java Persistence.createEntityManagerFactory()在哪里查找持久化单元?

Java Persistence.createEntityManagerFactory()在哪里查找持久化单元?,java,eclipse,hibernate,jpa,persistence,Java,Eclipse,Hibernate,Jpa,Persistence,我正在使用eclipse。我正在尝试调试一个失败,无法找到确实位于eclipse项目目录结构中的持久性单元 EntityManagerFactory javax.persistence.persistence.createEntityManagerFactory(字符串persistenceUnitName,映射属性)在哪里查找持久化单元 当我问它看起来在哪里时,我指的是所有可能被搜索到的资源,包括eclipse配置、persistence.xml中的属性(如果找到该文件)、由包含的JAR搜索的

我正在使用eclipse。我正在尝试调试一个失败,无法找到确实位于eclipse项目目录结构中的持久性单元

EntityManagerFactory javax.persistence.persistence.createEntityManagerFactory(字符串persistenceUnitName,映射属性)
在哪里查找持久化单元

当我问它看起来在哪里时,我指的是所有可能被搜索到的资源,包括eclipse配置、persistence.xml中的属性(如果找到该文件)、由包含的JAR搜索的资源等等。为了探索这是如何工作的,我右击位于根目录中的Main.java类来执行一个测试程序eclipse项目的(
src/main/java


答案可能会帮助我了解如何配置eclipse项目,以便
EntityManagerFactory javax.persistence.persistence.createEntityManagerFactory(字符串persistenceUnitName,映射属性)
可以找到持久性单元。

它搜索位于META-INF目录中的persistence.xml。此文件夹必须与根包处于同一级别


在maven项目中,文件夹应该位于/src/main/resources/META-INF/persistence.xml

好的,您的META-INF文件夹必须位于src/main/resourcesHow中。您在执行示例吗?如果您是从maven测试包运行的,那么您可能必须在src/test/resources中声明持久性。但老实说,我不太确定它是否是需要。+1感谢您迄今为止的帮助,尽管我正在寻找一个更深入的答案,可以帮助使用谷歌搜索的人真正了解内部管道中的情况。hyperjaxb创建persistence.xml并将其放置在您的目标文件夹中。也许这会干扰放置在资源文件夹中的文件夹。也许您可以y从输出目录中删除持久性,并再次运行您的示例。我的问题是通过移动由hyperjaxb和构建hyperjaxb项目的pom.xml文件组合创建的内容创建的。我通过在项目进入eclipse之前对项目构建进行更改来解决我的问题。我将您的问题作为答案感谢你花了这么多时间在这里。在其中一个链接中,(很可能)出现上述异常的原因是,尽管我使用的是MySQL 5.x,但我在该问题的给定XML文件中将
databasePlatform
错误配置为
org.hibernate.dialogue.mysqldialogue
或版本限制/特定版本-
org.hibernate.dialogue.mysqldialogue
QL5ALYENT(我至今还不清楚除了这个以外到底出了什么问题,因为我现在主要使用EJB)。