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

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

Estou tomando esse erro aqui, já tentei arrumar mas não estou conseguindo.

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

jun 26, 2018 5:09:50 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
    name: testehibe
    ...]
jun 26, 2018 5:09:50 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.3.1.Final}
jun 26, 2018 5:09:50 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
jun 26, 2018 5:09:50 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.3.Final}
jun 26, 2018 5:09:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
jun 26, 2018 5:09:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost/db0]
jun 26, 2018 5:09:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
jun 26, 2018 5:09:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
jun 26, 2018 5:09:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
jun 26, 2018 5:09:50 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
Exception in thread "main" java.lang.ExceptionInInitializerError
    at br.com.testeMaven.testes.First.main(First.java:19)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named testehibe
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at br.com.testeMaven.conf.JPAUtil.<clinit>(JPAUtil.java:9)
    ... 1 more
package br.com.testeMaven.conf;

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

public class JPAUtil {

    private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("testehibe");

    public EntityManager getEntityManager() {
        return factory.createEntityManager();
    }

}
<persistence 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"
    version="2.0">

    <!-- unidade de persistencia com o nome financas -->
    <persistence-unit name="testehibe">

        <!-- Implementação do JPA, no nosso caso Hibernate -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

        <!-- Aqui são listadas todas as entidades -->
        <class>br.com.testehibe.modelo.Conta</class>

        <properties>    
            <!-- Propriedades JDBC -->
            <property name="javax.persistence.jdbc.driver" 
                value="com.mysql.jdbc.Driver" />

            <property name="javax.persistence.jdbc.url" 
                value="jdbc:mysql://localhost/db0" />

            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="teste" />

            <!-- Configurações específicas do Hibernate -->
            <property name="hibernate.dialect" 
                value="org.hibernate.dialect.MySQL5InnoDBDialect" />

            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>
8 respostas

Fala ai Vanderson, de boa ?

Cara tenho um chute, acredito que você colocou o persistence.xml no local errado.

Pode falar o local dele e tudo mais ?

Opa boa noite. testehibe é o nome do projeto. O arquivo(persistence.xml) esta na seguinte pasta META-INF

testehibe\src\META-INF

Está no local certo, ao menos parece.

As libs estão cofiguradas corretamente no build path ?

Eu baixei no site do hibernate o arquivo hibernate-release-5.3.1.Final.zip. Deste arquivo zip fui na pasta

hibernate-release-5.3.1.Final.zip\hibernate-release-5.3.1.Final\lib\required

antlr-2.7.7.jar
byte-buddy-1.8.12.jar
classmate-1.3.4.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-5.0.3.Final.jar
hibernate-core-5.3.1.Final.jar
jandex-2.0.3.Final.jar
javassist-3.22.0-GA.jar
javax.persistence-api-2.2.jar
jboss-logging-3.3.2.Final.jar
jboss-transaction-api_1.2_spec-1.1.1.Final.jar

Peguei todos o pontos JARs eu coloquei no diretório

testehibe\lib

Na IDE do eclipse, os selecionei e click direito e adicionei ao build path.

Cara qual é a versão do seu mysql ?

Bom não sei onde posso ver isso, mais quando instalei baixei a ultima versão.

O que sei são essas informações, abaixo:

Server version: 5.7.21-log MySQL Community Server (GPL)

O Driver que estou usando é esse aqui
mysql-connector-java-5.1.15.jar
C:\Users\user>mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.7.21-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Estou usando este driver aqui na lib já com add path

mysql-connector-java-5.1.15.jar

Não tem um log de erro ou arquivo(log) de erros do hibernate. Onde ele possa passar o erro mais especifico do que esta acontecendo... Ou alguma propriedade, parâmetro que habilita essa possibilidade.

Vanderson, de boa ?

Cara tenta usar essa versão aqui:

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.11

solução!

Usei mas também continuo dando o erro.

Então refiz todas as classes e percebi que o único erro era uma letra. Tanto que só mudei proposital para ver se ocorria o mesmo erro e ocorreu.

O erro era o seguinte

public class Conta {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String titular;
    private String banco;
    private String agencia;
    private String numero;

    @OneToOne
    @JoinColumn(unique=true)
    private Cliente cliente;


    @OneToMany(mappedBy = "conta") // Erro acontecia exatamente nessa linha 
    private List<Movimentacao> movimentacoes;

Eu sem querer estava estava colocando

@OneToMany(mappedBy = "Conta")

ou invés de

@OneToMany(mappedBy = "conta")

Só isso ocorreu todo esse erro. Deveria haver uma descrição mais fácil para encontrar um erro tão simples . Algo como mappedBy not found ou not defined , sei lá, achei um erro muito simples que qualquer poderia ter cometido e muito difícil de encontrar.

Realmente sera que não existe log de erro mais claro do hibernate, por exemplo via algum arquivo. Ou o erros que ele retorna é somente via o console, pq se for é muito raso, por exemplo nesse caso. Bom minha opinião.

Mas Muito Obrigado pela ajuda Matheus.