Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

erro No Persistence provider for EntityManager named contas

fiz todos os passos do professor, mesmo banco de dados, e mesmo assim me gerou a exeção .

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named contas at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at br.com.allan.jpa.testes.TesteCriaTabelas.main(TesteCriaTabelas.java:10)

alguem conseguiu resolver esse erro ou alguém com o mesmo problema;

5 respostas

Olá Allan, tudo bem com você?

Pode verificar algo no seu arquivo persistence.xml por favor?

Temos uma parte chamada persistence-unit:

<persistence-unit name="contas">

Aqui temos o nome da unidade de persistência, quando criamos o EntityManager

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

Temos que utilizar o mesmo nome que está no name do persistence-unit

Pode checar se está igual ?

Abraços e Bons Estudos!

Sim está tudo igual ambas as partes ... Porém o banco de dados poderia causar essa exceção como por exemplo o endereço do banco não está correto?

Então, a questão é que a exceção está relacionada a realmente não encontrar uma unidade de persistência com o nome contas, normalmente quando é algo do endereço do banco ou senha temos um erro diferente

Mas para garantir, você pode postar aqui no fórum o conteúdo do seu pom.xml, persistence.xml e o TesteCriaTabelas.java para eu dar uma olhada ?

Abraços!

segue classes e arquivos

classe TestesCriaTabelas.java

package br.com.allan.jpa.testes;

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

public class TesteCriaTabelas {

public static void main(String[] args) {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
    EntityManager createEntityManager = emf.createEntityManager();
    emf.close();
}

}

arquivo persistence.xml

<persistence-unit name="contas">
    <provider>org.hibernate.jpa.HibernatePersistence</provider>
    <class>br.com.allan.jpa.modelo.Conta</class>

    <properties>
        <property name="javax.persistence.jdbc.driver"
            value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url"
            value="jdbc:mysql://localhost/alura_jpa" />
        <property name="javax.persistence.jdbc.user" value="root" />
        <property name="javax.persistence.jdbc.password" value="" />

        <property name="hibernate.dialect"
            value="org.hibernate.dialect.MySQL5InnoDBDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />

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

    </properties>
</persistence-unit>

arquivo pom.xml 4.0.0 br.com.allan.jpa projeto-jpa 0.0.1-SNAPSHOT org.hibernate hibernate-agroal 5.4.10.Final pom mysql mysql-connector-java 8.0.18

solução!

Opa Allan, tranquilo ?

No seu persistence.xml

Modifique:

    <provider>org.hibernate.jpa.HibernatePersistence</provider>

Para:

       <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

E agora sim teremos um provedor válido :)

Abraços e Bons Estudos!