Ajuda datatable lazy primafaces

To começando a mexer com o primefaces e estou apanhando dele. Usando o datatable básico ele funciona normal, mas tentando listar usando o datatable lazy, não retorna nenhum valor. Se alguém poder dar uma luz do que eu estou fazendo errado ia ajudar já

o xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui"
	xmlns:c="http://java.sun.com/jsp/jstl/core">

<h:head>
</h:head>
<h:body>
	<h:form>
		<p:dataTable  id="table" var="result" value="#{clienteController.clienteLazy}" paginator="true" rows="10"
                 paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                  selectionMode="single"  lazy="true" >
                 
			<p:column sortBy="#{result.nome}">
				<f:facet name="header">
					<h:outputText value="nome"/>
				</f:facet>
				<h:outputText value="#{result.nome}"/>
			</p:column>
			<p:column sortBy="#{result.cpf}">
				<f:facet name="header">
					<h:outputText value="cpf"/>
				</f:facet>
				<h:outputText value="#{result.cpf}"/>
			</p:column>
			<p:column sortBy="#{result.email}">
				<f:facet name="header">
					<h:outputText value="email"/>
				</f:facet>
				<h:outputText value="#{result.email}"/>
			</p:column>
		</p:dataTable>
	</h:form>
</h:body>
</html>

o lazyDataModel


package br.com.fideliza.controller;

import java.util.List;
import java.util.Map;

import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import br.com.fideliza.DAO.ClienteDAO;
import br.com.fideliza.model.Cliente;

public class ClienteLazy extends LazyDataModel<Cliente> {

	private static final long serialVersionUID = 4032799384164666059L;

	private List<Cliente> clientes;

	private ClienteDAO clienteDAO = new ClienteDAO();

	@Override
	public List<Cliente> load(int arg0, int arg1, String arg2, SortOrder arg3,
			Map<String, String> arg4) {

		clientes = clienteDAO.listaClientes();

		return clientes;
	}

}

o controller


package br.com.fideliza.controller;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.primefaces.model.LazyDataModel;

import br.com.fideliza.DAO.ClienteDAO;
import br.com.fideliza.model.Cliente;

@ManagedBean(name = "ClienteController")
@ViewScoped
public class ClienteController {

	private Cliente cliente;
	private ClienteDAO clienteDAO;

	private DataModel<Cliente> clienteLista;
	
	private LazyDataModel<Cliente> clienteLazy;

	public ClienteController() {

		this.cliente = new Cliente();
		this.clienteDAO = new ClienteDAO();
		this.clienteLazy = new ClienteLazy();
	}

	public String salvaCliente() {
		if (verificaEmail() == true) { // se o email está certo salva cadastro
			clienteDAO.adicionaCliente(cliente);
			return "save";
		} else {
			return "erro";
		}

	}

	public boolean verificaEmail() { // verifica se os campos "email" e  "confirma email" são iguais
										
		if (!cliente.getEmail().equals(cliente.getEmailConfirm())) {
			FacesContext.getCurrentInstance().addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR,
							"email invalido", null));
			return false;
		} else {
			return true;
		}
	}

	public DataModel<Cliente> getClienteLista() { // lista todos clientes
		List<Cliente> cliente = new ClienteDAO().listaClientes();
		clienteLista = new ListDataModel<Cliente>(cliente);
		return clienteLista;

	}
	
	public LazyDataModel<Cliente> getClienteLazy() {
		clienteLazy = new ClienteLazy();
		return clienteLazy;
	}

	public void setClienteLazy(LazyDataModel<Cliente> clienteLazy) {
		this.clienteLazy = clienteLazy;
	}

	public void setClienteLista(DataModel<Cliente> clienteLista) {
		this.clienteLista = clienteLista;
	}

	public Cliente getcliente() {
		return cliente;
	}

	public void setcliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public ClienteDAO getclienteDAO() {
		return clienteDAO;
	}

	public void setclienteDAO(ClienteDAO clienteDAO) {
		this.clienteDAO = clienteDAO;
	}

}

E o DAO


package br.com.fideliza.DAO;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.fideliza.model.Cliente;
import br.com.fideliza.util.HibernateUtil;

public class ClienteDAO {
	
	private Session session;
	private Transaction tx;
	
	public ClienteDAO (){
		
		session = HibernateUtil.getSession();
		tx = session.beginTransaction();

	}
	
	public void adicionaCliente (Cliente cliente){
		session.save(cliente);
		tx.commit();
		session.close();

	}
	
	@SuppressWarnings("unchecked")
	public List<Cliente> listaClientes(){
		return session.createCriteria(Cliente.class).list();
		
	}
	
}

Siga esse exemplo: http://uaihebert.com/?p=1120

guilhermecoelho2 , conseguiu resolver ???