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

Exception ao executar a classe TesteJPAMovimentacao

Bom dia estou com a seguinte exception no console ao executar a classe TesteJPAMovimentacao:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at br.com.caelum.financas.teste.TesteJPARelacionamento.main(TesteJPARelacionamento.java:29)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named financas
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at br.com.caelum.financas.util.JPAUtil.<clinit>(JPAUtil.java:9)
    ... 1 more

Segue código para análise:

package br.com.caelum.financas.modelo;

import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Movimentacao {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private BigDecimal valor;

    @Enumerated(EnumType.STRING)
    private TipoMovimentacao tipo;

    @Temporal(TemporalType.TIMESTAMP)
    private Calendar data;

    private String descricao;

    @ManyToMany
    private Conta conta;

    public Conta getConta() {
        return conta;
    }

    public void setConta(Conta conta) {
        this.conta = conta;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    public TipoMovimentacao getTipo() {
        return tipo;
    }

    public void setTipo(TipoMovimentacao tipo) {
        this.tipo = tipo;
    }

    public Calendar getData() {
        return data;
    }

    public void setData(Calendar data) {
        this.data = data;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

}
package br.com.caelum.financas.modelo;

public enum TipoMovimentacao {

    ENTRADA, SAIDA;
}
<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="financas">

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

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

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

            <property name="javax.persistence.jdbc.url"
                value="jdbc:mysql://localhost/financas?useTimezone=true&amp;serverTimezone=UTC" />

            <property name="javax.persistence.jdbc.user" value="felipe" />
            <property name="javax.persistence.jdbc.password"
                value="123456" />

            <!-- 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>
package br.com.caelum.financas.teste;

import java.util.Calendar;

import javax.persistence.EntityManager;

import br.com.caelum.financas.modelo.Conta;
import br.com.caelum.financas.modelo.Movimentacao;
import br.com.caelum.financas.modelo.TipoMovimentacao;
import br.com.caelum.financas.util.JPAUtil;

public class TesteJPARelacionamento {

    public static void main(String[] args) {

        Conta conta = new Conta();
        conta.setAgencia("0102");
        conta.setBanco("Itau");
        conta.setNumero("0000123");
        conta.setTitular("Lucas Travassos");

        Movimentacao mov = new Movimentacao();

        mov.setData(Calendar.getInstance());
        mov.setDescricao("Churrascaria");
        mov.setTipo(TipoMovimentacao.SAIDA);
        mov.setConta(conta);

        EntityManager em = new JPAUtil().getEntityManager();
        em.getTransaction().begin();

        em.persist(conta);
        em.persist(mov);

        em.getTransaction().commit();
        em.close();
    }

}

Abraços

4 respostas

Fala ai Felipe, de boa ?

Cara ele basicamente não tá conseguindo abrir a conexão com seu banco.

Ele estava antes ? Ou não tentou ainda?

solução!

Fala Matheus , conseguir resolver. Obrigado.

Como resolveu ?

Boa tarde Matheus, eu exclui tudo e fiz do zero.