使用Java SE的JPA:javax.persistence.PersistenceException:没有EntityManager的持久性提供程序

时间:2016-11-20 22:11:48

标签: java jpa persistence eclipselink

执行Java SE JPA独立应用程序会引发异常:

javax.persistence.PersistenceException: No Persistence provider for EntityManager named test

我发现了几个类似的帖子,但我认为它们都不适用于我的EclipseLink,Java SE和没有打包成可部署文件的情况,因此没有WEB-INF等。

/src/META-INF/persistence.xml是:

<persistence>
    <persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>SomeEntity</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/somedbname"/>
            <property name="javax.persistence.jdbc.user" value="foo"/>
            <property name="javax.persistence.jdbc.password" value="bar"/>
        </properties>
    </persistence-unit>
</persistence>

以下jar在构建路径上:

  • org.eclipse.persistence.jpa-2.6.4.jar
  • 的EclipseLink-2.6.4.jar
  • javax.persistence-2.1.1.jar
  • 的PostgreSQL-9.4.1212.jar

2 个答案:

答案 0 :(得分:0)

您必须将eclipselink jar添加到您的ClassPath以检查它已经存在或不存在:

System.out.println(System.getProperty("java.class.path"));

答案 1 :(得分:0)

我必须在persistence.xml中使用xmlns属性

提供持久性命名空间
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">