【问题标题】:Hibernate JPA - Error: No Persistence provider for EntityManagerHibernate JPA - 错误:EntityManager 没有持久性提供程序
【发布时间】:2012-11-03 22:47:00
【问题描述】:

我正在编写我的第一个 Hibernate JPA 项目。我有一个非常常见的问题(我发现了很多关于它的文章),但没有适合我的解决方案。

当我运行应用程序时出现此错误:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named JpaTest2
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at net.andy.DatabaseAccess.testJpa(DatabaseAccess.java:55)
at net.andy.Main.main(Main.java:11)

我的 persistence.xml 是:

<persistence-unit name="pu3" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>net.andy.Writer</class>
  <properties>
     <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
     <!--  <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/> -->
     <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
     <property name="hibernate.connection.username" value="postgres"/>
     <property name="hibernate.connection.password" value="postgres"/>
     <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/testdb"/>
     <property name="hibernate.max_fetch_depth" value="3"/>
  </properties>

这是我的课程,我尝试将一些东西保存到数据库:

    public static void testJpa() {

    // Use persistence.xml configuration

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("JpaTest2");
    EntityManager em = emf.createEntityManager();

    // Work with the EM
    Writer w = new Writer();
    //MapEntity map = new MapEntity();
    w.setId(5);

    EntityTransaction transaction = em.getTransaction();
    transaction.begin();
    em.persist(w);
    transaction.commit();
    em.close();
    emf.close(); 
}

我已经阅读了许多描述此错误的文章。 到目前为止,我有:

  1. 在 persistence.xml 中添加了一行。
  2. 更改了 persistence.xml 位置(我已经尝试过可能每个人的位置也 meta-inf 文件夹、myproject/src 等)
  3. 添加了 libs hibernate-core, hibernate-entitymanager, hibernate-commons-annotations, ejb3-persistence、hibernate-jpa、jta、postgresqljdbc(以及一些 更多)。

如何解决这个问题?上面的代码几乎是从教程中复制过来的,所以我认为库或项目结构存在一些问题,但找不到正确的原因。

【问题讨论】:

    标签: hibernate jakarta-ee jpa


    【解决方案1】:

    您可能需要在pom.xml 中配置dependenciesHere : 设置配置。

    pom.xml

    <project ...>
      ...
      <dependencies>
        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-entitymanager</artifactId>
          <version>${hibernate-core-version}</version>
        </dependency>
      </dependencies>
    </project>
    

    【讨论】:

      【解决方案2】:

      persistence.xml 中持久性单元的名称是pu3,而在构建EntityManagerFactory 的代码中,您使用JpaTest2。尝试先修改它(使用相同的名称)。

      【讨论】:

      • 哦,我没看到那个错误。我改了名字,但还是有同样的错误。
      • 好的,这是一个开始;现在您需要确保 hibernate-entityframework 在您的类路径中。您是否有意从persistence.xml 中删除了您在问题中发布的根元素?
      • 感谢您的帮助。正如你所说,我再次查看了我的类路径。我发现我没有为 jpa 添加一个罐子。我已经下载了hibernate档案,之前有文件夹libs/required并且没有hibernate-entitymanager.jar。它在不同的目录中,这就是我忘记它的原因。再次感谢!
      猜你喜欢
      • 1970-01-01
      • 2014-12-15
      • 2016-11-04
      • 2012-06-21
      • 2019-01-16
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      相关资源
      最近更新 更多