Hibernate 5.2.2:没有EntityManager的持久性提供程序

Hibernate 5.1.1和5.2.2之间有什么变化? 如果我使用5.2.2,我将收到一条错误消息“没有为EntityManager命名为pu的持久性提供程序”。 完全相同的配置适用于5.1.1。 我应该如何更改代码以使5.2.2工作?

的pom.xml

  4.0.0 jpatest jpatest 0.0.1-SNAPSHOT  5.2.2.Final     junit junit 4.12    org.postgresql postgresql 9.4.1209.jre7    org.hibernate hibernate-core ${hibernate.version}   org.hibernate hibernate-entitymanager ${hibernate.version}    

src / main / resources / META-INF中的persistence.xml

    org.hibernate.ejb.HibernatePersistence         <!--  -->      

创建EntityManager

 factory = Persistence.createEntityManagerFactory("pu"); em = factory.createEntityManager(); tx = em.getTransaction(); 

hibernate-release-5.2.2.Final.zip包文件中不存在类org.hibernate.ejb.HibernatePersistence 。 这就是无法找到提供者的原因,因为该类不能(在项目库jars)。 相反,我使用了类org.hibernate.jpa.HibernatePersistenceProvider ,它可以在hibernate-core-5.2.2.Final.jar(它带有hibernate-release-5.2.2.Final.zip包)中找到,通过改变persistence.xml中的提供者为org.hibernate.jpa.HibernatePersistenceProvider 。 这样做,它工作正常! 希望问题只是这个。

有时只是忘记将persistence.xml文件添加到构建路径会导致此问题。 请按照以下步骤操作:

  1. 右键单击persistence.xml文件。
  2. 单击Build Path
  3. 添加到构建路径

然后它应该工作。

我有同样的错误。 我改变了版本

   org.hibernate hibernate-entitymanager  

从5.3.1.Final到5.3.6.Final和错误消失了。