错误:不推荐使用PersistenceProvider,使用HibernatePersistenceProvider而不是HibernatePersistence

我认为对于像我这样的所有初学者来说这是一个非常普遍的问题。 但我找不到解决方案。 然而。

文件persistence.xml位于src / META-INF / persistence.xml中

    org.hibernate.ejb.HibernatePersistenceProvider   br.com.caelum.tarefas.modelo.Job                

当我运行代码

 try { EntityManagerFactory factory = Persistence.createEntityManagerFactory("tarefas"); EntityManager manager = factory.createEntityManager(); manager.close(); factory.close(); System.out.println("Execução com sucesso!"); }catch(Exception _Ex) { System.out.println("Erro: " + _Ex.getMessage()); } 

我收到了消息

 27/03/2014 11:35:18 org.hibernate.ejb.HibernatePersistence logDeprecation WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead. 27/03/2014 11:35:18 org.hibernate.ejb.HibernatePersistence logDeprecation WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead. 27/03/2014 11:35:18 org.hibernate.ejb.HibernatePersistence logDeprecation WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead. Erro: No Persistence provider for EntityManager named jobs 

我做错了什么?

问题出在persistence.xml文件的这一行:

  org.hibernate.ejb.HibernatePersistenceProvider 

它应该改为

  org.hibernate.jpa.HibernatePersistenceProvider 

即使persistence.xml中缺少provider标记,由于Hibernate错误,Hibernate将使用旧的ejb提供程序实现,然后它会抱怨(精神分裂症)

aurelije的解决方案是正确的,但是即使你指定了正确的HibernatePersistenceProvider ,Hibernate中的错误也会错误报告问题:错误的所有细节都可以在错误报告HHH-9141中找到并存在于Hibernate EntityManager版本4.3.5.Final中。