JSF 2 - meu sortBy e filterBy do primefaces 3 NÃO FUNCIONA

Boa noite galera, já pesquisei bastante sobre esses metodos para ordenar e filtrar utilizando o primefaces com o dataTabe mas não sei onde estou errando.
quando eu coloco algum valor no filtro ele diz que nenhum valor foi encontrado e quando eu apago o valor da pesquisa, todos os resultados aparecem novamente.

segue o meu codigo : xhtml

[code]<h:form id=“form” rendered="#{LoginMB.logado}">
<p:growl id=“growl” showDetail=“true” />
<p:dataTable var=“hot” value="#{hotelMB.lazyModel}" paginator=“true” rows=“15"
paginatorTemplate=”{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}“
rowsPerPageTemplate=“5,10,15,20,25” selectionMode=“single” selection=”#{hotelMB.hotel}" id=“hotTable” lazy=“true” rowKey="#{hot.id_hotel}" >

      <p:ajax event="rowSelect" update=":form:display" oncomplete="hotDialog.show()" />  

    <f:facet name="header" >  
        Hotéis  
    </f:facet>  

    <p:column headerText="Nome Hotel"  sortBy="#{hot.nomeHotel}" filterBy="#{hot.nomeHotel}" id="nomeHotel">  
        #{hot.nomeHotel}  
    </p:column>  

    <p:column headerText="Razão Social" sortBy="#{hot.razaoSocial}" filterBy="#{hot.razaoSocial}" id="razaoSocial">  
        #{hot.razaoSocial}  
    </p:column>  

    <p:column headerText="Cnpj" sortBy="#{hot.cnpj}" filterBy="#{hot.cnpj}" id="cnpj">  
        #{hot.cnpj}  
    </p:column>  

    <p:column headerText="Endereço" sortBy="#{hot.endereco}" filterBy="#{hot.endereco}" id="endereco">  
        #{hot.endereco}  
    </p:column>  

</p:dataTable>  [/code]

meu ManagedBean :

[code]@ManagedBean(name=“hotelMB”)
@SessionScoped
public class HotelMB implements Serializable{

private HotelBean hotel;
private ArrayList<HotelBean> list_hoteis;
private LazyDataModel<HotelBean> lazyModel;

public HotelMB(){
    hotel = new HotelBean();
            
}

public HotelBean getHotel() {
    return hotel;
}

public void setHotel(HotelBean hotel) {
    this.hotel = hotel;
}

public LazyDataModel<HotelBean> getLazyModel() {
    return lazyModel;
}

public void setLazyModel(LazyDataModel<HotelBean> lazyModel) {
    this.lazyModel = lazyModel;
}

public ArrayList<HotelBean> getList_hoteis() {
    return list_hoteis;
}

public void setList_hoteis(ArrayList<HotelBean> list_hoteis) {
    this.list_hoteis = list_hoteis;
}




public String consultaHoteis(){
    try {
        HotelDAO dao_Hotel = new HotelDAO();
        
        list_hoteis = new ArrayList();
        list_hoteis = dao_Hotel.hoteis();
        
        lazyModel = new LazyHotelDataModel(list_hoteis);
    
    
   // return list_hoteis;
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(HotelMB.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(HotelMB.class.getName()).log(Level.SEVERE, null, ex);
    }
    return "consultaHotel.xhtml?faces-redirect=true";
}

}[/code]

minha classe LazyHotelDataModel :

[code]public class LazyHotelDataModel extends LazyDataModel{

private List<HotelBean> datasource; 

public LazyHotelDataModel(List<HotelBean> datasource) {  
    this.datasource = datasource;  
} 

@Override
public List<HotelBean> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {  
    List<HotelBean> data = new ArrayList<HotelBean>();  

    //filter  
    for(HotelBean hotel : datasource) {  
        boolean match = true;  

        for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {  
            try {  
                String filterProperty = it.next();  
                String filterValue = filters.get(filterProperty);  
                String fieldValue = String.valueOf(hotel.getClass().getField(filterProperty).get(hotel));  

                if(filterValue == null || fieldValue.startsWith(filterValue)) {  
                    match = true;  
                }  
                else {  
                    match = false;  
                    break;  
                }  
            } catch(Exception e) {  
                match = false;  
            }   
        }  

        if(match) {  
            data.add(hotel);  
        }  
    }  

    //sort  
    if(sortField != null) {            
        Collections.sort(data, new LazySorterHotel(sortField, sortOrder));
    }
    

    //rowCount  
    int dataSize = data.size();  
    this.setRowCount(dataSize);  

    //paginate  
    if(dataSize > pageSize) {  
        try {  
            return data.subList(first, first + pageSize);  
        }  
        catch(IndexOutOfBoundsException e) {  
            return data.subList(first, first + (dataSize % pageSize));  
        }  
    }  
    else {  
        return data;  
    }  
}

}[/code]

o que eu realmente preciso para o metodo sortBy e filterBy do primefaces funcione ??

Olá amigo…
tambem estava com esse problema, e consegui graças a esse topico
http://www.guj.com.br/java/268090-sortby-do-datatable-nao-funciona---primefaces

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