JPA + Hibernate = Persistent Provider for EntityManager

I am trying to configure JPA for my Maven project using Hibernate as a provider.

Project structure

β”œβ”€β”€ META-INF β”‚ └── persistence.xml β”œβ”€β”€ src | β”œβ”€β”€ main | | └── java | | β”œβ”€β”€ model | | | └── Instance.java | | └── App.java | └── test | └── java | └── model | └── AppTest.java └── pom.xml 

Content persistence.xml

 <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1"> <persistence-unit name="testjpa" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <class>it.vitrociset.model.Instance</class> <properties> <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/aquasystem"/> <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> <property name="hibernate.connection.username" value="username"/> <property name="hibernate.connection.password" value="password"/> </properties> </persistence-unit> </persistence> 

.Java instance contents

 package model; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class Instance { @Id private String id; private String path; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } } 

App.java Content

 import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class App { public static void main( String[] args ) { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("testjpa"); EntityManager em = entityManagerFactory.createEntityManager(); EntityTransaction userTransaction = em.getTransaction(); userTransaction.begin(); Instance instance = new Instance(); instance.setId("id"); instance.setPath("path"); em.persist(instance); userTransaction.commit(); em.close(); entityManagerFactory.close(); } } 

Pom.xml content

 <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></groupId> <artifactId></artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.3.6.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.6.Final</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> </dependencies> </project> 

I got the following exception:

 Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named testjpa 

but I have no idea why. What is wrong in my code? I could not find a solution.

+7
java maven hibernate jpa
source share
3 answers

Persistence.xml is not in the resource directory and therefore not in the classpath. Move the META-INF directory to src / main / resources.

+13
source share

Add hibernate-entitymanager.jar to the classpath to solve this problem.

+4
source share

I had this problem with hibernation 5. Switching to 4.3.11. Final fix. Org.hibernate.ejb.HibernatePersistence was not in the classpath.

0
source share

All Articles