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