1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Retornar lista de objetos por ano

Amigos,

Estou com um pequeno problema na minha aplicação onde tenho um método no meu DAO que eu quero que ele retorne uma lista de Ocorrencias feitas no ano, fiz o método só que ele não retorna pelo ano que eu seleciono na minha view, ele está retornando todas as ocorrencias sem filtrar pelo ano, segue o código:

@SuppressWarnings("unchecked")
    public List<Ocorrencia> listaPorAno(int ano) {
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            Criteria cri = sessao.createCriteria(Ocorrencia.class);
            sessao.createQuery(
                    "select ocorrencia from Ocorrencia ocorrencia "
                            + "where year(ocorrencia.dataAbertura) = "
                            + ano
                            + "order by month(ocorrencia.dataAbertura), ocorrencia.titulo, ocorrencia.id")
                    .list();
            cri.addOrder(Order.desc("id"));
            return cri.list();
        } finally {

            sessao.close();
        }

    }

O que pode está errado nesse método?

Segue meu Bean:

public void geraListaOcorrenciaPorAno(ActionEvent actionEvent) {
        this.ocorrencias_por_ano = ocorrenciaDao.listaPorAno(ano);
        System.out.println("Ano selecionado: " + this.ano);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Lista gerada com sucesso!"));
    }

Minha view:

<h:form id="formPrincipal">
        <p:growl id="messages" showDetail="true" life="20000" />
        <p:spacer height="2%"/>
        <p:dataTable value="#{ocorrenciaBean.ocorrencias_por_ano}" var="lista"
            id="tabelaOcorrencias" tableStyle="height:100"
            emptyMessage="Nenhuma ocorrência encontrada"
            selection="#{ocorrenciaBean.ocorrenciaSelecionada}"
            selectionMode="single" rowKey="#{lista}" paginator="true" rows="5"
            paginatorPosition="top" rowsPerPageTemplate="5,10,15,30"
            paginatorTemplate="  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {CurrentPageReport} "
            >

            <p:ajax event="rowSelect" listener="#{ocorrenciaBean.onRowSelect}"
                update=":formPrincipal:lista_interacoes" />

            <f:facet name="header">
                <div style="overflow: hidden;">
                    <table>
                        <tr>
                            <td width="33%">

                            </td>
                            <td width="34%"><h:outputText
                                    style="font-size: 20px; letter-spacing: 2px;"
                                    value="Controle de Ocorrências" /></td>                                
                            <td width="33%" align="left">
                                <h:outputText value="Ano" style="margin-left:50%" />
                                <br/>
                                <p:selectOneMenu value="#{ocorrenciaBean.ano}" style="width:25%;margin-left:50%">
                                    <f:selectItems value="#{ocorrenciaBean.anos}" var="lista" itemValue="#{lista}" itemLabel="#{lista}"/>                                    
                                </p:selectOneMenu>
                            </td>                            
                            <td width="33%" align="right">
                                <p:commandButton value="Gerar lista" actionListener="#{ocorrenciaBean.geraListaOcorrenciaPorAno}" update=":formPrincipal:tabelaOcorrencias" style="width:100%"/>
                            </td>

                        </tr>
                    </table>
                </div>

            </f:facet>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf primefaces hibernate dao ou faça a sua própria pergunta.