No Persistence provider for EntityManager named

Estou estudando Hibernate com JPA e segui a documentação para criar uma simples aplicação para conectar e criar as tabelas no banco através do JPA. No entanto está sendo exibido essa mensagem de erro:

javax.persistence.PersistenceException: No Persistence provider for EntityManager named TesteJPA

Pesquisei em alguns fóruns sobre esse erro e vi que poderia ser o arquivo persistence.xml que poderia não estar no caminho correto. Mas verifiquei e o arquivo está no caminho correto: src > main > resources > META-INF > persistence.xml.

Mas mesmo assim o erro continua. Podem me ajudar ?

Aqui está o persisten.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence-unit name="TesteJPA" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    <properties>
        <property name="javax.persistence.jdbc.url"
                  value="jdbc.postgresql://babar.db.elephantsql.com:5432/itymkqee" />

        <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
        <property name="javax.persistence.jdbc.user" value="itymkqee" />
        <property name="javax.persistence.jdbc.password" value="LvGVqbbBt8rkblQXrA1ruA60RUGxeTNU" />

        <property name="hibernate.hbm2ddl.auto" value="create" />

        <!-- https://docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/dialect/package-summary.html -->
        <property name="hibernate.dialect" 	value="org.hibernate.dialect.PostgreSQLDialect" />
    </properties>
</persistence-unit>

A classe de persistência

package com.example.SmSolucoes.model;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;

@Getter
@Setter
@Entity
public class Cliente {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
@Column
private String nome;
@Column
private String cpfCnpj;

public Cliente (Integer id, String nome, String cpfCnpj)
{
    this.id = id;
    this.nome = nome;
    this.cpfCnpj = cpfCnpj;
}

}

E a classe que está criando o EntityManager

package com.example.SmSolucoes.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
@RequestMapping(“/clientes”)
public class ClienteController {

@GetMapping
public String Get(){

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("TesteJPA");
    EntityManager em = emf.createEntityManager();

    return ("Testando");
}

}

Por se tratar de um projeto spring, o persistence.xml não é mais necessário. Em vez disso, vc precisa configurar um datasource. No caso de spring-boot, veja: “How-to” Guides

Da forma como vc fez, deve funcionar se vc criar um projeto maven sem spring.

O <persistence-unit> deve estar dentro de <persistence>.

<persistence>
  <persistence-unit>

  </persistence-unit>
</persistence>
1 curtida

Estou realmente usando o spring-boot.
Comecei a configurar um datasource com as propriedades de conexão do banco e funcionou. Valeu