Trazer apenas itens do mês?

4 respostas
programaçãojava
F

Estou com problemas para trazer a relação de atividades do mes e ano atual. Não consigo encontrar o problema no meu código.

Segue meu código:

public String todos() {
        Query qry = em.createNamedQuery("Atividade.findAll");
        setAtividades((List<Atividade>) qry.getResultList());
        List<Atividade> listMes = new ArrayList<>();
        Date data = new Date();
        GregorianCalendar dataCal = new GregorianCalendar();
        dataCal.setTime(data);
        int mesAtual = dataCal.get(Calendar.MONTH);
        int anoAtual = dataCal.get(Calendar.YEAR);
        for (Atividade obj : this.getAtividades()) {
            Date data1 = obj.getDataAtividade();
            GregorianCalendar dataPdv = new GregorianCalendar();
            dataPdv.setTime(data1);
            int mesPdv = dataPdv.get(Calendar.MONTH);
            int anoPdv = dataPdv.get(Calendar.YEAR);
            if (mesAtual == mesPdv && anoAtual == anoPdv) {
                listMes.add(obj);
            }
            this.atividadesMes = listMes;
        }
        if (getAtividades().isEmpty()) {
            FacesMessage fm = new FacesMessage("Nenhum registro encontrado");
            FacesContext.getCurrentInstance().addMessage("consultar", fm);
            setAtividade(null);
        }
        return "atividades";
    }

4 Respostas

E

Bom dia
O seu método não deveria retornar uma List ao invés de String?

F

Na verdade não, eu já setei no list e retorno a pagina

F

Meu problema é que filtro apenas os do mês, só que está trazendo todos

E

Seria mais fácil se você ao invés de buscar todas as atividades no banco você fizesse uma query que buscasse só no mês, assim você economizaria no java
por Exemplo:
Select * from Atividade a where a.mes = :mes and ano = ano;
tenta fazer assim, mas adapta para o seu banco

Criado 15 de maio de 2017
Ultima resposta 16 de mai. de 2017
Respostas 4
Participantes 2