Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate和EclipseLink提供程序_Java_Hibernate_Maven_Eclipselink - Fatal编程技术网

Java Hibernate和EclipseLink提供程序

Java Hibernate和EclipseLink提供程序,java,hibernate,maven,eclipselink,Java,Hibernate,Maven,Eclipselink,我的项目中运行了一个Hibernate,我正在尝试将它设置为可切换到EclipseLink。我在Maven中添加了所有EclipseLink类,但它们似乎根本没有运行。当我尝试运行项目时,结果是: Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named test My persistence.xml文件: 包含依

我的项目中运行了一个Hibernate,我正在尝试将它设置为可切换到EclipseLink。我在Maven中添加了所有EclipseLink类,但它们似乎根本没有运行。当我尝试运行项目时,结果是:

Exception in thread "main" javax.persistence.PersistenceException: 
    No Persistence provider for EntityManager named test
My persistence.xml文件:

包含依赖项的pom.xml文件:


一旦我将persistence.xml中的提供程序切换回Hibernate,一切正常。

我看到persistence.xml中存在一个重大问题和几个小问题

最大的问题是您的持久性单元名为“org.knyttl”,但错误消息说找不到持久性单元“test”。如果您正在寻找“test”,而pu是“org.knyttl”,那么您将找不到任何东西。:)

次要的问题是,您有几个EclipseLink属性的名称错误。“javax.persistence.target数据库”应为“”,而“javax.persistence.logging.level”应为“”


Shaun

我认为切换JPA实现不是一件容易的事情。在发布问题时,“test”和“org.knyttl”只是一个输入错误。不幸的是,这些小问题并没有解决问题。如果persistence.xml中的持久化单元名称与createEntityManagerFactory()调用中的名称匹配,那么我敢打赌EclipseLink不在您的类路径上。要调试它,您可以单步执行Persistence.createEntityManagerFactory代码,并观察它寻找JPA提供程序。它通过尝试加载类路径上的所有META-INF/services/javax.persistence.spi.PersistenceProvider文件来定位它们。