Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
17
respostas

Configuração de ambiente - Persistence provider for EntityManager named

Olá pessoal,

Estou com dificuldade para configurar o ambiente, ocorre o erro: ''Persistence provider for EntityManager named financasp.''

  • Já conferi o nome "financasp" no arquivo XML;
  • O arquivo persistence.xml está dentro da pasta META-INF , dentro do SRC;
  • Utilizo o Eclipse Neon 1.0.
  • Estou utilizando MySql; -Hibernate release 4.3.5.Final

erro completo:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named financasp at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) at testesnoJPA.TestaJpa1.main(TestaJpa1.java:26)

código 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 financas -->
    <persistence-unit name="financasp">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <!-- Implementação do JPA, no nosso caso Hibernate -->
        <!-- Aqui são listadas todas as entidades -->
        <class>financasproj.financasp</class>
        <properties>
            <!-- Propriedades JDBC -->
            <!-- 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" />
            <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
            <property name="hibernate.connection.url" value="jdbc:mysql:///&lt;name&gt;"/>
        </properties>
    </persistence-unit>
</persistence> 


Classe testajpa

```package testesnoJPA;

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

import financasproj.financasp;

public class TestaJpa1 {

    public static void main(String[] args) {


        financasp cont = new financasp();
        System.out.println("digite agencia:");
        cont.setAgencia("2323");
        System.out.println("digite banco:");
        cont.setBanco("CAIXA");
        System.out.println("digite nuemro:");
        cont.setNumero("7542");
        System.out.println("digite titular:");
        cont.setTitular("joao");



        EntityManagerFactory emf = Persistence.createEntityManagerFactory("financasp");

        EntityManager em = emf.createEntityManager();


        em.getTransaction().begin();
        em.persist(cont);
        em.getTransaction().commit();

        em.close();
        emf.close();

    }

}classe financasp

classe financasp

package financasproj;

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

@Entity
public class financasp {
    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    Integer id;
    String titular;

    public String getTitular() {
        return titular;
    }

    public void setTitular(String titular) {
        this.titular = titular;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getAgencia() {
        return agencia;
    }

    public void setAgencia(String agencia) {
        this.agencia = agencia;
    }

    public String getBanco() {
        return banco;
    }

    public void setBanco(String banco) {
        this.banco = banco;
    }

    String numero;
    String agencia;
    String banco;

}
17 respostas

Silvio, no seu arquivo persistence.xml você precisa especificar o driver de conexão corretamente e o endereço do seu servidor de banco de dados.

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

    <persistence-unit name="financasp" transaction-type="JTA">

        <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>financasproj.financasp</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/[nome_da_base_de_dados]" />
            <property name="javax.persistence.jdbc.user" value="[nome_do_usuario_do_banco]" />
            <property name="javax.persistence.jdbc.password" value="[senha_do_usuario_do_banco]" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="create" />
        </properties>
    </persistence-unit>
</persistence>

Faça as alterações para a sua realidade nos lugares:

[nome_da_base_de_dados]

[nome_do_usuario_do_banco]

[senha_do_usuario_do_banco]

Esse erro deve desaparecer. Executa aí e dá um retorno...

Abraço.

Conseguiu resolver seu problema Silvio ?

não rolou..

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

    <persistence-unit name="financasp" transaction-type="JTA">

        <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>financasproj.financasp</class>

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

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="create" />
        </properties>
    </persistence-unit>
</persistence>

obs: já conferi o numero da porta no xamp.

segue o projeto:

https://github.com/silvioAL/jpa.git

Alguém?

Qual o nome do banco de dados que você criou no seu mysql? tem certeza que foi financasp?

mysql> show databases; +---------------------+ | Database | +---------------------+ | information_schema | | controle_protocolos | | financasp | | mysql | | performance_schema | | sakila | | sys | | world | +---------------------+

cheguei a suspeitar dos jars, mas baixei novos e não surtiu efeito..


<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry kind="lib" path="lib/required/antlr-2.7.7.jar"/>
    <classpathentry kind="lib" path="lib/required/cdi-api-1.1.jar"/>
    <classpathentry kind="lib" path="lib/required/classmate-1.3.0.jar"/>
    <classpathentry kind="lib" path="lib/required/dom4j-1.6.1.jar"/>
    <classpathentry kind="lib" path="lib/required/el-api-2.2.jar"/>
    <classpathentry kind="lib" path="lib/required/geronimo-jta_1.1_spec-1.1.1.jar"/>
    <classpathentry kind="lib" path="lib/required/hibernate-commons-annotations-5.0.1.Final.jar"/>
    <classpathentry kind="lib" path="lib/required/hibernate-core-5.2.6.Final.jar"/>
    <classpathentry kind="lib" path="lib/required/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
    <classpathentry kind="lib" path="lib/required/jandex-2.0.3.Final.jar"/>
    <classpathentry kind="lib" path="lib/required/javassist-3.20.0-GA.jar"/>
    <classpathentry kind="lib" path="lib/required/javax.inject-1.jar"/>
    <classpathentry kind="lib" path="lib/required/jboss-interceptors-api_1.1_spec-1.0.0.Beta1.jar"/>
    <classpathentry kind="lib" path="lib/required/jboss-logging-3.3.0.Final.jar"/>
    <classpathentry kind="lib" path="lib/required/jsr250-api-1.0.jar"/>
    <classpathentry kind="lib" path="lib/jpa-metamodel-generator/hibernate-jpamodelgen-5.2.6.Final.jar"/>
    <classpathentry kind="lib" path="lib/jpa-metamodel-generator/mysql-connector-java-5.1.40-bin.jar"/>
    <classpathentry kind="lib" path="lib/required/hibernate-entitymanager-5.2.5.Final.jar"/>
    <classpathentry kind="lib" path="lib/required/mysql-connector-java-5.1.40-bin.jar"/>
    <classpathentry kind="lib" path="lib/required/jboss-transaction-api_1.1_spec-1.0.1.Final-sources.jar"/>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Altera essa linha só para testar.

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

para

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

não funcionou, abri a aba "Problems", talvez realmente seja algum problema nos jars...

abaixo os erros:

1º - Description Resource Path Location Type The project cannot be built until build path errors are resolved ProjetoLoja Unknown Java Problem

2º - Description Resource Path Location Type The user library 'JPA-Hibernate' references non existing library 'C:\Users\silvi\Desktop\java\bibliotecas JPA\HIBERNATE\antlr-2.7.7.jar' ProjetoLoja Build path Build Path Problem

3º - Description Resource Path Location Type The user library 'MYSQL_CONNECTOR' references non existing library 'C:\Users\silvi\Desktop\java\bibliotecas JPA\MYSQL\mysql-connector-java-5.1.40-bin.jar' ProjetoLoja Build path Build Path Problem

hum qual erro que aparece no seu consóle?

este:


Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named financasp
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
    at testesnoJPA.TestaJpa1.main(TestaJpa1.java:26)

Uma duvida, como é o nome do seu projeto?

financasp

solução!

Olá Silvio,

Eu pesquisei um pouco e vendo alguns arquivos de configuração do Hibernate eu substitui o

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

por:

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

e o teste funcionou.

Espero ter ajudado

MUITO OBRIGADO MESMO!!!

Já não sabia mais o que fazer!!! rsrsrs