Trazer apenas itens do mês?

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";
    }

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

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

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

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