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

persistence.xml não está sendo encontrado

Estou tocando um projeto pessoal para praticar, mas não consigo resolver esse o problema em que o provider do EntityManager não está sendo encontrado:

Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named meuprovider

Já verifiquei:

-- Se a string passada para Persistence.createEntityManagerFactory("meuprovider") é a mesma de

<persistence-unit name="meuprovider" transaction-type ="RESOURCE_LOCAL">

-- Se o arquivo persistence.xml está na pasta META-INF.

  • Estou usando Tomcat v9.0*

/projeto/WebContent/META-INF/persistence.xml:

<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 meuprovider -->
    <persistence-unit name="meuprovider" transaction-type ="RESOURCE_LOCAL">

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

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

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

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

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

Classe que chama o provider:

import java.util.ArrayList;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// ... códigos omitidos ...

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("meuprovider");
        EntityManager em = emf.createEntityManager();
7 respostas

Fala Jader, tranquilo?

Quais libs você está utilizando?

Fala, Daniel! Tudo tranquilo! E você?

Estou usando as seguintes libs - Todas já adicionadas ao Buildpath:

lib/ (Pasta)
    hibernate/ (Pasta)
        antlr-2.7.7.jar
        dom4j-1.6.1.jar
        hibernate-commons-annotations-4.0.1.Final.jar
        hibernate-core-4.2.0.Final.jar
        hibernate-entitymanager-4.2.0.Final.jar
        hibernate-jpa-2.0-api-1.0.1.Final.jar
        javassist-3.15.0-GA.jar
        jboss-logging-3.1.0.GA.jar
        jboss-transaction-api_1.1_spec-1.0.0.Final.jar
        mysql-connector-java-5.1.24-bin.jar
    hibernate-jpa-2.1-api-1.0.0.final.jar
    jstl-1.2.jar
    jta-1_1.jar
    mysql-connector-java-8.0.13.jar
solução!

Jader, tenta pegar as versões mais recentes dos jar's e vê se o problema persiste (sacou o trocadilho?)

Fala, Daniel! Muito obrigado pela ajuda, resolveu finalmente meu problema!

O trocadilho foi bom, inteligente! kkkk

Eu procurei muito na internet, mas só achei a solução aqui com suporte da Alura. Muito obrigado! Vocês manjam muito!

Acabei encontrando também este outro post com o Nico falando que essa versão 5.4 do Hibernate está bugada. https://cursos.alura.com.br/forum/topico-no-persistence-provider-for-entitymanager-named-financa-21669

Opa, fico feliz em ajudar!

Qualquer coisa estamos por aqui :)

Fala Jader, tranquilo?

Posso fechar o tópico?

Fala, Daniel! Muito obrigado! Pode fechar sim.