sortBy do DataTable não funciona - Primefaces

Estou tendo um problema com o sortBy do Primefaces. O datatable funciona perfeito, mas o sortBy não quer funcionar. Eu já utilizei outros filtros, como o caso do filterBy e funciona.

[code] <h:form id=“FormListaConsulta”>
<h:panelGrid id=“GridListaConsulta”>
<p:dataTable var=“listas” id=“listarconsultas” value="#{agendaBean.listarMarcacoes}"
emptyMessage=“Nenhuma marcação encontrada”
>

                <p:column sortBy="#{listas.dataConsulta}" id="FiltroDta" filterBy="#{listas.dataConsulta}" filterMatchMode="exact" headerText="Data">
                    <h:outputText value="#{listas.dataConsulta}">
                    </h:outputText>
                </p:column>
                
                
                <p:column sortBy="#{listas.tipo}" headerText="Tratamento">
                    <h:outputText value="#{listas.tipo}"/>
                </p:column>

            </p:dataTable>

        </h:panelGrid>  
    </h:form>  [/code]

Meu DAO:

public List<Agenda> listarConsultas() { Session session = HibernateUtil.getSession(); Transaction t = session.beginTransaction(); List lista = session.createQuery("from Agenda").list(); t.commit(); return lista; }

Meu MB:

[code] private DataModel listarMarcacoes;

public DataModel getListarMarcacoes() {
    List<Agenda> lista = new DaoAgenda().listarConsultas();
    listarMarcacoes = new ListDataModel(lista);
    return listarMarcacoes;
}

public void setListarMarcacoes(DataModel listarMarcacoes) {
    this.listarMarcacoes = listarMarcacoes;
}[/code]

Evite carregar sua lista de dados nos getters. Tente uma chamada de inicialização no @PostConstruct para carregar os dados iniciais, pois quando eles são chamados muitas vezes resulta neste tipo de problema de classificação e desempenho. Algo assim…

        private List<Entidade> findAll;
        ....
	@PostConstruct
	public void construct() {
		//code
		findAll = seuEJB.findAll();
	}

	public List<Entidade> findAll(){
		return findAll;
	}
        ...

xhtml

<p:dataTable id="dataTable" value="#{seulBean.findAll()}" ...
2 curtidas

Obrigado resolveu o meu problema

Resolveu o meu também muito obrigado.

Cara, muito obrigado! Funcionou aqui!

No meu caso, eu tenho um método no meu bean onde retorno uma lista, e para povoar meu DataTable eu invoco este método.
<p:dataTable id="TBvariedade" var="variedade" value="#{variedadeController.listar()}" selectionMode="single" rowKey="#{variedade.id}" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="10,20,30" paginatorPosition="bottom" >

Meu sortBy não funciona. Se ao invés de eu invocar o método no dataTable eu invocar uma variável que armazena o retorno do método listar() o sortBy funciona, no entanto se eu adicionar um novo dado (vide botão “+ Novo” que renderiza outra página para cadastro) o dataTable não é atualizado e o novo dado inserido não aparece como uma nova linha (mas se olhar no banco e dado etá la).

O que acontece é que to nesse empasse de ou funciona a ordenação clicando na coluna ou funciona a inserção de um novo dado. Pelo amor de Deus, alguém me da uma luz ?!