Java.lang.ClassNotFoundException: javax.persistence.Persistence could not be found with JPA

I am evaluating the JPA API. I got an error

java.lang.ClassNotFoundException: javax.persistence.Persistence cannot be found 

My code is below:

 EntityManagerFactory emf; emf = Persistence.createEntityManagerFactory("mail"); EntityManager em = emf.createEntityManager(); Query query = em.createQuery("SELECT v FROM Version v"); List<Version> versions = query.getResultList(); 

Error in the line emf = Persistence.createEntityManagerFactory("mail");

Any solution?

+6
source share
1 answer

You are trying to create a separate JPA project. To do this, you need the banks of the JPA provider. Two more popular suppliers are Eclipselink and Hibernate. If you use maven, you can add dependencies to their implementations.

  • For eclipselink

     <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>eclipselink</artifactId> <version>2.5.1</version> </dependency> 
  • For sleep mode

     <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> 

If you are not using maven, you can download their implementations from your sites and put them in your classpath.

Some JPA quick starts recommend adding only JPA API dependencies (interface declarations only) with maven.

  <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>javax.persistence</artifactId> <version>2.1.0</version> </dependency> 

or

  <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.0.Final</version> </dependency> 

This approach will only succeed in the server environment, as the server will provide an appropriate implementation at runtime.

+13
source

Source: https://habr.com/ru/post/974738/


All Articles