LazyDatatable com função filtering(Primefaces)

Olá Pessoal!

Eu consegui renderizar uma datatable com lazy mas agora não consigo usar o filtro para pesquisar os objetos,meu exemplo está assim.

Meu bean:

@ViewScoped
public class Transacao_DocumentoBean {

private Transacao_Documento transacao_documento = new Transacao_Documento();
private Transacao_Documento transacao_documentoSelecionada = new Transacao_Documento();
private List<Transacao_Documento> lista;
private Integer id_transacao;
private Integer id_camp_adic;
private Integer id_doc;
private UploadedFile arquivo;
private StreamedContent streamedContent;
private LazyDataModel<Transacao_Documento> lazymodel;


 @PostConstruct
    public void init() {
       
	lazymodel  = new LazyTransacao_Documento(listar());
	
 }

Minha LazyDataModel:

package br.com.OPT_WEB_002.transacao_documento;

import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

public class LazyTransacao_Documento extends LazyDataModel<Transacao_Documento> {

private static final long serialVersionUID = 1L;
private List<Transacao_Documento> listaTransDoc;

public LazyTransacao_Documento(List<Transacao_Documento> listaTransDoc) {
        
	this.listaTransDoc = listaTransDoc;
}

public LazyTransacao_Documento() {}

 
    public Transacao_Documento getRowData(String rowKey) {
    	
        for(Transacao_Documento transacao_Documento : listaTransDoc) {
        	
            if(transacao_Documento.getId_transacao_doc() == Integer.parseInt(rowKey))
                
            	return transacao_Documento;
        }
 
        return null;
    }
    @Override
    public Object getRowKey(Transacao_Documento transacao_Documento) {
        return transacao_Documento.getId_transacao_doc();
    }
 

    @Override
    public List<Transacao_Documento> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
        List<Transacao_Documento> data = new ArrayList<Transacao_Documento>();
 
        //filter
        for(Transacao_Documento transacao_Documento: listaTransDoc) {
            boolean match = true;
 
            if (filters != null) {
               
            	for (Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
                    
            		try {
                    	
                        String filterProperty = it.next();
                        Object filterValue = filters.get(filterProperty);
                        String fieldValue = String.valueOf(transacao_Documento.getClass().getField(filterProperty).get(transacao_Documento));
                        
                        if(filterValue == null || fieldValue.startsWith(filterValue.toString())) {
                            match = true;
                    }
                        
                    else {
                            match = false;
                            break;
                        }
                    } catch(Exception e) {
                        match = false;
                    }
                   
                }
            }
 
            if(match) {
            	
                data.add(transacao_Documento);
            }
        }
  
        //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;
        }
    }

	public List<Transacao_Documento> getListaTransDoc() {
		return listaTransDoc;
	}

	public void setListaTransDoc(List<Transacao_Documento> listaTransDoc) {
		this.listaTransDoc = listaTransDoc;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

}

Eu estudei um pouco o método que carrega a datatable com lazy mas não entendi a parte em que o filtro funciona,um dos erros que aparecem durante é o noSuchFiledException.Então pesquisei para saber o porque e encontrei respostas dizendo que os campos que estão sendo carregados com filtro não podem ser private.Alguém pode me ajudar a desvendar este erro ou usar um outro tipo de filtro com lazy?

Agradeço desde já!