Исключение в потоке «main» javax.persistence.Исключение PersistenceException: нет поставщика сохраняемости для EntityManager с именем jpa-test

#java #jpa #entity

#java #jpa #сущность

Вопрос:

Мой текст ошибки:

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

Я перепробовал все идеи по этому вопросу отсюда, но не работает. Я все еще получаю ту же ошибку.
Я не знаю, что делать .. Пожалуйста, не давайте мне ссылки на подобные вопросы. Я действительно перепробовал все идеи, но все еще не работает
persistence.xml

 <?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/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">
  <persistence-unit name="jpa-test" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.licenta.ascourses.model.Utilizator</class>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC" />
      <property name="javax.persistence.jdbc.url" value="jdbc:sqlite:test.db" />
      <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
      <property name="eclipselink.ddl-generation.output-mode" value="database" />
    </properties>
    </persistence-unit>
</persistence>
 

Сущность:

    package com.licenta.ascourses.model;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Utilizator implements Serializable {

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private int id_utilizator;
    private String username;
    private String parola;
    private String email;
    private String nume;
    private String prenume;
    private int cod;
    private int status;

    public Utilizator(String nume, String prenume){
        this.nume=nume;
        this.prenume=prenume;

    }



    public Utilizator(String username, String parola, String email, String nume,
            String prenume, int cod, int status) {


        this.username = username;
        this.parola = parola;
        this.email = email;
        this.nume = nume;
        this.prenume = prenume;
        this.cod = cod;
        this.status = status;
    }

    public Utilizator(String email, String nume, String prenume, int status) {
        super();
        this.email = email;
        this.nume = nume;
        this.prenume = prenume;
        this.status = status;
    }



    public Utilizator(String string) {
        this.username=string;
    }



    public int getId_utilizator() {
        return id_utilizator;
    }

    public void setId_utilizator(int id_utilizator) {
        this.id_utilizator = id_utilizator;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getParola() {
        return parola;
    }

    public void setParola(String parola) {
        this.parola = parola;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNume() {
        return nume;
    }

    public void setNume(String nume) {
        this.nume = nume;
    }

    public String getPrenume() {
        return prenume;
    }

    public void setPrenume(String prenume) {
        this.prenume = prenume;
    }

    public int getCod() {
        return cod;
    }

    public void setCod(int cod) {
        this.cod = cod;
    }

    public int isStatus() {
        return status;
    }

    public void setStatus(int status) {

        this.status = (status==1)?1:0;


    }

    public int getStatus() {


        return (this.status==1)?1:0;

    }

}
 

Мой тестовый класс:

 package com.licenta.ascourses.DbConnection;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;

import com.licenta.ascourses.model.Utilizator;

public class JPATest {

    public static void performJPA() {

        // Creating objects representing some products
        Utilizator user1=new Utilizator("andrei", "parola", "jean@jean", "jean", "popescu", 123, 1);
        Utilizator user2=new Utilizator("miu", "parola2", "ana@ana", "ana", "cartianu", 234, 1);

        // Connecting to the database through EntityManagerFactory
        // connection details loaded from persistence.xml
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa-test");

        EntityManager em = emf.createEntityManager();

        // Creating a new transaction
        EntityTransaction tx = em.getTransaction();

        tx.begin();

        // Persisting the product entity objects
        em.persist(user1);
        em.persist(user2);

        tx.commit();

        // Querying the contents of the database using JPQL query
        Query q = em.createQuery("SELECT * FROM Utilizatori p");

        @SuppressWarnings("unchecked")
        List<Utilizator> results = q.getResultList();

        System.out.println("List of productsn----------------");

        for (Utilizator user : results) {

            System.out.println(user.getNume()   " (id="   user.getId_utilizator()   ")");
        }

        // Closing connection
        em.close();

        emf.close();
    }




}
 

Комментарии:

1. Где ваш persistence.xml находится в вашем пути к классу? Какие банки JPA-провайдера и JPA API jar у вас есть в ПУТИ к КЛАССУ? При простом поиске этого сообщения об ошибке здесь будут отображаться страницы людей, задающих один и тот же вопрос, и они всегда ссылались на то, что находится в ПУТИ к КЛАССУ и где

Ответ №1:

Вам нужен поставщик JPA в вашем пути к классу. Примеры поставщиков: Hibernate, Toplink, Apache OpenJPA, EclipseLink.

Чтобы узнать о пути к классам Java, см.: Руководство по Java по пути к классам

Комментарии:

1. <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa</artifactId> <версия> 2.6.4</версия> </dependency>

2. не существует такой вещи, как «Apache OpenDB»

3. @NeilStockton Спасибо, изменен на OpenJPA.

4. @CobianuA Maven предоставляет вам зависимости во время компиляции. Во время выполнения JVM должна знать, где находятся ваши файлы классов и файлы .jar (зависимости времени выполнения). Это часто делается с classpath помощью параметра командной строки или CLASSPATH переменной среды. ссылка: docs.oracle.com/javase/7/docs/technotes/tools/windows /…