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

Como conseguiria exibir o nome da categoria que vem na lista?

Como eu conseguiria pegar o nome da categoria que esta na lista de movimentações?

    public static void main(String[] args) {

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

        Categoria categoria = new Categoria();
        categoria.setId(1);

        String jpql = "select m from Movimentacao m join m.categoria c where c = :pCategoria";
        Query query = em.createQuery(jpql);
        query.setParameter("pCategoria", categoria);

        List<Movimentacao> resultados = query.getResultList();


        for (Movimentacao movimentacao : resultados) {
            System.out.println("Descricao: " + movimentacao.getDescricao());
            System.out.println("Conta_ID: " + movimentacao.getId());
            System.out.println(movimentacao.getCategoria());

        }




        em.getTransaction().commit();
        em.close();
    }
public class Movimentacao {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    @Enumerated(EnumType.STRING)
    private TipoMovimentacao tipo;
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar data;
    @JoinColumn(nullable = false)
    @ManyToOne
    private Conta conta;
    private BigDecimal valor;
    private String descricao;
    @ManyToMany
    private List<Categoria> categoria;

//getters e setters
}

public class Categoria {

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

// @Deprecated public Categoria() { }

public Categoria(String nome) {
    this.nome = nome;
}
//getters e setters

}

3 respostas

Resolvi o problema da seguinte forma.

        for (Movimentacao movimentacao : resultados) {

            int contador = 0;
            while (contador < movimentacao.getCategoria().size()) {

                System.out.println("Descricao: " + movimentacao.getDescricao());
                System.out.println("Conta_ID: " + movimentacao.getId());
                System.out.println("Categoria: " + movimentacao.getCategoria().get(contador).getNome());

                contador++;
            }

        }
Hibernate: 
    select
        movimentac0_.id as id1_3_,
        movimentac0_.conta_id as conta_id6_3_,
        movimentac0_.data as data2_3_,
        movimentac0_.descricao as descrica3_3_,
        movimentac0_.tipo as tipo4_3_,
        movimentac0_.valor as valor5_3_ 
    from
        Movimentacao movimentac0_ 
    inner join
        Movimentacao_Categoria categoria1_ 
            on movimentac0_.id=categoria1_.Movimentacao_id 
    inner join
        Categoria categoria2_ 
            on categoria1_.categoria_id=categoria2_.id 
    where
        categoria2_.id=?
Hibernate: 
    select
        conta0_.id as id1_2_0_,
        conta0_.agencia as agencia2_2_0_,
        conta0_.banco as banco3_2_0_,
        conta0_.numero as numero4_2_0_,
        conta0_.titular as titular5_2_0_ 
    from
        Conta conta0_ 
    where
        conta0_.id=?
Hibernate: 
    select
        categoria0_.Movimentacao_id as Moviment1_4_0_,
        categoria0_.categoria_id as categori2_4_0_,
        categoria1_.id as id1_0_1_,
        categoria1_.nome as nome2_0_1_ 
    from
        Movimentacao_Categoria categoria0_ 
    inner join
        Categoria categoria1_ 
            on categoria0_.categoria_id=categoria1_.id 
    where
        categoria0_.Movimentacao_id=?
Descricao: Viagem a SP
Conta_ID: 2
Categoria: Lazer
Descricao: Viagem a SP
Conta_ID: 2
Categoria: Negocios
Hibernate: 
    select
        categoria0_.Movimentacao_id as Moviment1_4_0_,
        categoria0_.categoria_id as categori2_4_0_,
        categoria1_.id as id1_0_1_,
        categoria1_.nome as nome2_0_1_ 
    from
        Movimentacao_Categoria categoria0_ 
    inner join
        Categoria categoria1_ 
            on categoria0_.categoria_id=categoria1_.id 
    where
        categoria0_.Movimentacao_id=?
Descricao: Viagem ao RJ
Conta_ID: 3
Categoria: Lazer
Descricao: Viagem ao RJ
Conta_ID: 3
Categoria: Negocios
solução!

Outra forma legal de fazer é assim:

public static void main(String[] args) {

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

        Categoria categoria = new Categoria();
        categoria.setId(1);

        String jpql = "select m from Movimentacao m join m.categoria c where c = :pCategoria";
        Query query = em.createQuery(jpql);
        query.setParameter("pCategoria", categoria);

        List<Movimentacao> resultados = query.getResultList();


        for (Movimentacao movimentacao : resultados) {
            System.out.println("Descricao: " + movimentacao.getDescricao());
            System.out.println("Conta_ID: " + movimentacao.getId());
        for (Categoria categoria : movimentacao.getCategoria()){
            System.out.println(categoria.getNome());
}

        }




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

Valeu Matheus

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software