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

fully qualified name continua com o toString( ) Aula 7, atividade 7

Olá.

Como faço para que não apareça o fully qualified name das movimentações após o print desta aula e de fato seja impressa as movimentações? Usando o método toString( ) não deu certo. Ou eu devo ter feito errado.

Titular: Maria dos Santos Movimentações: [br.com.caelum.financas.modelo.Movimentacao@1b32cd16, br.com.caelum.financas.modelo.Movimentacao@488b50ec, br.com.caelum.financas.modelo.Movimentacao@18a645fd, br.com.caelum.financas.modelo.Movimentacao@6090f3ca] Titular: Paulo Roberto Souza Movimentações: [br.com.caelum.financas.modelo.Movimentacao@25b865b5, br.com.caelum.financas.modelo.Movimentacao@f9b5552, br.com.caelum.financas.modelo.Movimentacao@6872f9c8, br.com.caelum.financas.modelo.Movimentacao@6d2d99fc] Titular: Antonio Duraes Movimentações: [br.com.caelum.financas.modelo.Movimentacao@5e3a39cd, br.com.caelum.financas.modelo.Movimentacao@21f9277b, br.com.caelum.financas.modelo.Movimentacao@201aa8c1] Titular: Leandra Marques Movimentações: [br.com.caelum.financas.modelo.Movimentacao@52a36910] Titular: Alexandre Duarte Movimentações: [br.com.caelum.financas.modelo.Movimentacao@4f20a5e0, br.com.caelum.financas.modelo.Movimentacao@54da32dc]

5 respostas

Boa noite, Ivo! Como vai?

Vc poderia colar aqui a sua classe Movimentacao? Assim eu poderei dar uma olhada no código e te ajudar de forma mais efetiva!

Obs.: Quando for mandar o código, utilize o botão "inserir código" e cole o código no lugar indicado!

Grande abraço e bons estudos, meu aluno!

Olá Gabriel. Agradeço pela atenção.

Segue as classes Movimentacao, Conta e TesteTodasMovimentacoesDasContas

package br.com.caelum.financas.modelo;

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

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.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
//@NamedQuery(query="select distinct avg(m.valor) from Movimentacao m where m.conta = :pConta" 
//                        + "and m.tipo = :pTipo" + " group by m.data", name="MediasPorDiaETipo")
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;

    @ManyToOne
    private Conta conta;

    @ManyToMany
    private List <Categoria> categoria;

    public List<Categoria> getCategoria() {
        return categoria;
    }
    public void setCategorias(List<Categoria> categoria) {
        this.categoria = categoria;
    }
    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;
    }
    public Conta getConta() {
        return conta;
    }
    public void setConta(Conta conta) {
        this.conta = conta;
    }

}


package br.com.caelum.financas.modelo;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Conta {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    private String titular;
    private String numero;
    private String banco;
    private String agencia;

    @OneToMany(mappedBy = "conta")
    private List<Movimentacao> movimentacoes;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getTitular() {
        return titular;
    }
    public void setTitular(String titular) {
        this.titular = titular;
    }
    public String getNumero() {
        return numero;
    }
    public void setNumero(String numero) {
        this.numero = numero;
    }
    public String getBanco() {
        return banco;
    }
    public void setBanco(String banco) {
        this.banco = banco;
    }
    public String getAgencia() {
        return agencia;
    }
    public void setAgencia(String agencia) {
        this.agencia = agencia;
    }
    public List<Movimentacao> getMovimentacoes() {
        return movimentacoes;
    }

}


package br.com.caelum.financas.teste;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

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

public class TesteTodasMovimentacoesDasContas {

    public static void main(String[] args) {

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

        String jpql = "select distinct c from Conta c left join fetch c.movimentacoes";

        Query query  = em.createQuery(jpql);

        List<Conta> todasAsContas = query.getResultList();

        for (Conta conta : todasAsContas) {
            System.out.println("Titular: "+conta.getTitular());
            System.out.println("Movimentações: ");
            System.out.println(conta.getMovimentacoes());
        }
    }

}
solução!

Boa tarde, Ivo! Como vai?

Vc precisa implementar o método toString() na classe Movimentacao. Daí, quando vc imprimir qualquer objeto dessa classe, o toString() será acionado para montar a String que deverá ser impressa. Segue um exemplo:

public class Movimentacao {

     public String toString() {
          return "Descrição da movimentação: " 
                              + this.descricao;
     }
}

Nesse caso, sempre que imprimir uma movimentação o que irá aparecer será a sua descrição. Agora basta que vc altere o toString() que eu acabei de mostrar para que imprima o que vc desejar!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Olá prof. Gabriel.

Era isso mesmo que estava faltando. Eu havia feito a sobrescrita do método toString( ), mas acredito que fiz errado. Agora está redondo. Grato.

Por nada, Ivo! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!