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

Dúvida no Ex. 10 da Aula 7 - Melhorando e organizando as queries

No main tive que passar como parâmetro o tipo de movimentação


package financas.br.com.caelum.financas.teste;

import br.com.caelum.financas.dao.MovimentacaoDao;
import br.com.caelum.financas.util.JPAUtil;
import financas.br.com.caelum.financas.modelo.Conta;
import financas.br.com.caelum.financas.modelo.TipoMovimentacao;
import javax.persistence.EntityManager;
import org.omg.IOP.ENCODING_CDR_ENCAPS;

/**
 *
 * @author thiago
 */
public class TesteConsultaComDAO {

    public static void main(String[] args) {
        EntityManager manager = new JPAUtil().getEntityManager();

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

        MovimentacaoDao dao = new MovimentacaoDao(manager);
        Double media = dao.mediaDaConta(conta, TipoMovimentacao.SAIDA); 

        System.out.println(media);

    }
}

Na DAO tive que colocar a query recebendo o tipo de movimentação

package br.com.caelum.financas.dao;

import financas.br.com.caelum.financas.modelo.Conta;
import financas.br.com.caelum.financas.modelo.TipoMovimentacao;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

/**
 *
 * @author thiago
 */
public class MovimentacaoDao {

    private EntityManager manager;

    public MovimentacaoDao(EntityManager manager) {
        this.manager = manager;
    }

    public Double mediaDaConta(Conta conta, TipoMovimentacao tipo) {

        TypedQuery<Double> query = manager.createQuery(
                "select avg(m.valor) from Movimentacao m where m.conta=:pConta "
                + " and m.tipoMovimentacao = :pTipo", Double.class);

        query.setParameter("pConta", conta);
        query.setParameter("pTipo", tipo);

        return query.getSingleResult();
    }

}

Antes de eu adicionar esse parâmetro dava erro: Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum

Isso que fiz era realmente necessário ou fiz algo errado?

2 respostas
solução!

Oi Thiago,

vc fez certinho, ao usar o param :pTipo é preciso passar o ENUM.

abs

Oi Thiago,

vc fez certinho, ao usar o param :pTipo é preciso passar o ENUM.

abs