org hibernatepersistenceprovider hibernatepersistence java hibernate

java - hibernatepersistenceprovider - Hibernate 5.2.2: no hay proveedor de persistencia para EntityManager



org hibernate jpa hibernatepersistenceprovider maven (3)

A veces, simplemente olvidando agregar el archivo persistence.xml para crear la ruta causa este problema. Siga los siguientes pasos:

  1. Haga clic derecho en el archivo persistence.xml .
  2. Haga clic en Build Path
  3. Añadir a construir ruta

Entonces debería funcionar.

¿Qué ha cambiado entre Hibernate 5.1.1 y 5.2.2? Si uso 5.2.2 obtendré un mensaje de error "Ningún proveedor de persistencia para EntityManager llamado pu". Exactamente la misma configuración funciona con 5.1.1. ¿Cómo debo cambiar mi código para que funcione 5.2.2?

pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jpatest</groupId> <artifactId>jpatest</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <hibernate.version>5.2.2.Final</hibernate.version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.4.1209.jre7</version> </dependency> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> </dependencies> </project>

persistence.xml en src / main / resources / META-INF

<?xml version="1.0" encoding="UTF-8" ?> <persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="pu" > <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.archive.autodetection" value="class" /> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" /> <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/mydb" /> <property name="hibernate.default_schema" value="myschema" /> <property name="hibernate.connection.username" value="xxx" /> <property name="hibernate.connection.password" value="zzz" /> <!-- <property name="hibernate.show_sql" value="true"/> --> <property name="hibernate.flushMode" value="FLUSH_AUTO" /> <property name="hibernate.hbm2ddl.auto" value="validate" /> </properties> </persistence-unit> </persistence>

creando EntityManager

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


La clase org.hibernate.ejb.HibernatePersistence no existe en el archivo del paquete hibernate-release-5.2.2.Final.zip . Es por eso que no se puede encontrar al proveedor, porque la clase no puede (en los frascos de la biblioteca del proyecto). En su lugar, utilicé la clase org.hibernate.jpa.HibernatePersistenceProvider , que se puede encontrar en hibernate-core-5.2.2.Final.jar (que viene con hibernate-release-5.2.2.Final.zip bundle), cambiando el proveedor en persistence.xml para <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> . ¡Al hacerlo, funcionó bien! Espero que el problema sea solo esto.


Yo tenía el mismo error. Cambié la versión de

<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> </dependency>

de 5.3.1.Final a 5.3.6.Final y error desaparecieron.