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中的提供者为
。 这样做,它工作正常! 希望问题只是这个。
有时只是忘记将persistence.xml
文件添加到构建路径会导致此问题。 请按照以下步骤操作:
- 右键单击
persistence.xml
文件。 - 单击Build Path
- 添加到构建路径
然后它应该工作。
我有同样的错误。 我改变了版本
org.hibernate hibernate-entitymanager
从5.3.1.Final到5.3.6.Final和错误消失了。