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.
java maven hibernate jpa
Andrea
source share