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

Movimentacao_Categoria sem registros

Ola, boa tarde.

Estou executando a classe "TesteMovimentacaoComCategoria" e a tabela "Movimentacao_Categoria" esta sendo criada no banco, mas não é inserido nenhum registro nela. Os outros inserts desta class nas outras tabelas ocorrem normalmente.

Têm ideia do que pode estar ocorrendo?

4 respostas

Olá Giovanni,

ele acusa algum tipo de erro? Poderia mandar o codigo da classe TesteMovimentacaoComCategoria para eu dar uma olhada e ver o que está acontecendo.

Oi Lucas.

Então, nenhum erro é acusado. Vou mandar o código e o log do console.

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.util.JPAUtil;
import br.com.financas.modelo.Categoria;
import br.com.financas.modelo.Conta;
import br.com.financas.modelo.Movimentacao;
import br.com.financas.modelo.TipoMovimentacao;


public class TesteMovimentacaoComCategoria {

    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()); 
        movimentacao1.setDescricao("Viagem à SP");
        movimentacao1.setTipoMovimentacao(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()); 
        movimentacao2.setDescricao("Viagem ao RJ");
        movimentacao2.setTipoMovimentacao(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 categoria1 é Managed
        em.persist(categoria2); // Agora categoria2 é Managed

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

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

    }
}

log

INFO: HHH000102: Fetching database metadata
Mai 08, 2017 2:44:32 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000396: Updating schema
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: GO.CATEGORIA
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [id, nome]
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: []
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [sys_c0052212]
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: GO.CLIENTE
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [endereço, id, conta_id, profissao, nome]
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [fk96841ddaa1163d8]
Mai 08, 2017 2:44:33 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [sys_c0052192]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: GO.CONTA
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [id, banco, agencia, cliente_id, titular, numero]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [fk3e4474fff80ac78]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [sys_c0052207, sys_c0052185]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: GO.MOVIMENTACAO
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [id, conta_id, tipomovimentacao, valor, data, descricao]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [fk257eb923a1163d8]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: [sys_c0052214]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000261: Table found: GO.MOVIMENTACAO_CATEGORIA
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000037: Columns: [categorias_id, movimentacao_id]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000108: Foreign keys: [fkfc77e4f721b416cb, fkfc77e4f7eeb4689c]
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: HHH000126: Indexes: []
Mai 08, 2017 2:44:34 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: 
    select
        SEQ_CATEG.nextval 
    from
        dual
Hibernate: 
    select
        SEQ_CATEG.nextval 
    from
        dual
Hibernate: 
    select
        SEQ_MOVIMENTA.nextval 
    from
        dual
Hibernate: 
    select
        SEQ_MOVIMENTA.nextval 
    from
        dual
Hibernate: 
    insert 
    into
        Categoria
        (nome, id) 
    values
        (?, ?)
Hibernate: 
    insert 
    into
        Categoria
        (nome, id) 
    values
        (?, ?)
Hibernate: 
    insert 
    into
        Movimentacao
        (conta_id, data, descricao, tipoMovimentacao, valor, id) 
    values
        (?, ?, ?, ?, ?, ?)
Hibernate: 
    insert 
    into
        Movimentacao
        (conta_id, data, descricao, tipoMovimentacao, valor, id) 
    values
        (?, ?, ?, ?, ?, ?)

Oi pessoal.

Consegui resolver o problema. Aparentemente na Classe Movimentacao haviam 2 metodos setCategoria, um deles foi gerado automaticamante e provavelmente sobrescrevia o setter que gerei abaixo.

public void setCategoria(List<Categoria> categorias) {
    this.categorias = categorias;
}

Agradeço a atenção.

solução!

Oi pessoal.

Consegui resolver o problema. Aparentemente na Classe Movimentacao haviam 2 metodos setCategoria, um deles foi gerado automaticamante e provavelmente sobrescrevia o setter que gerei abaixo.

public void setCategoria(List<Categoria> categorias) {
    this.categorias = categorias;
}

Agradeço a atenção.