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

Duvida aula de relacionamentos JPA

Eu criei o código da aula, mas quando executo o TesteMovimentacoesComCategoria ele cria as tabelas, cria a tabela relacional mas não adiciona os dados.

Não sei o porque, segue o meu código:


package br.com.caelum.financas.teste;

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

import javax.persistence.EntityManager;

import br.com.caelum.financas.modelo.Categoria; 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 TesteMovimentacoesComCategoria {

public static void main(String[] args) {

    Categoria categoria1 = new Categoria("Viagem");
    Categoria categoria2 = new Categoria("Negócios");

    Conta conta = new Conta();
    conta.setId(2); 

    Movimentacao movimentacao1 = new Movimentacao();
    movimentacao1.setData(Calendar.getInstance()); // hoje
    movimentacao1.setDescricao("Viagem à SP");
    movimentacao1.setTipo(TipoMovimentacao.SAIDA);
    movimentacao1.setValor(new BigDecimal("100.0"));
    movimentacao1.setCategorias(Arrays.asList(categoria1, categoria2));

    movimentacao1.setConta(conta);

    Movimentacao movimentacao2 = new Movimentacao();
    movimentacao2.setData(Calendar.getInstance()); // hoje
    movimentacao2.setDescricao("Viagem ao RJ");
    movimentacao2.setTipo(TipoMovimentacao.SAIDA);
    movimentacao2.setValor(new BigDecimal("300.0"));
    movimentacao2.setCategorias(Arrays.asList(categoria1, categoria2));

    movimentacao2.setConta(conta);

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

    em.persist(categoria1); // Agora a 'categoria1' é Managed
    em.persist(categoria2); // 

    em.persist(movimentacao1);
    em.persist(movimentacao2);

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



}

}

E oque aparece no console são as mensagens de execução da JPA e isso aqui

Hibernate:

alter table Cliente 
   add constraint FKajhxkga86ursgptf0lm09qpj0 
   foreign key (conta_id) 
   references Conta (id)

não da nenhuma exception

2 respostas
Conta conta = new Conta();
 conta.setId(2); 

Se a conta já possui um id , estão existe uma representação dela no BD , ou seja , um dia ela já foi MANAGED e sincronizada com o BD, então obtenha uma referência dela MANGED através de :

Conta conta = em.find(Conta.class,2);
solução!

Descobri o que era.

Era o Banco q tinha travado, depois q eu reiniciei ele funcionou.

Devia ter testado isso antes, desculpa.