Paginação sob demanda no hibernat e primefaces 3.0 M3

Pessoal estou precissando fazer uma paginação sob demamda na minha p:dataTable, para isso estou usando o primefaces 3.0 M3 e o hibernat. Vou postar meus códigos para ver se alguérm pode me ajudar;
CarretaDAO

[code]public interface CarretaDAO {

..............

public List<Carreta> getBuscaCodigo(Integer codigocarreta);

}[/code]

CarretaDAOImpl

[code]public class CarretaDAOImpl extends GenericDAO implements CarretaDAO {

private static final long serialVersionUID = 1L;
private Session session;

public CarretaDAOImpl(Session session) {
    this.session = session;
}

public CarretaDAOImpl() {
    this.session = getSession();
}

..........

@SuppressWarnings("unchecked")
public List<Carreta> getListaPaginado(int inicio, int quantidade) {
    Session ses = getSession();
    Query query = ses.createQuery("SELECT e FROM Carreta e").setFirstResult(inicio).setMaxResults(quantidade);

    List<Carreta> lista = (List<Carreta>) query.list();
    ses.close();
    return lista;
}

}[/code]

LazyCarretaDataModel

[code]public class LazyCarretaDataModel extends LazyDataModel {

private CarretaDAO carretaDAO = new CarretaDAOImpl();

public LazyCarretaDataModel(CarretaDAO carretaDAO) {
    this.carretaDAO = carretaDAO;
    setRowCount(Long.valueOf(carretaDAO.count()).intValue()); //Aqui um método que retorne o número total de linhas do banco
}

@Override
public List<Carreta> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
    int page = first == 0 ? 0 : first / pageSize;
    List<Carreta> carretas = carretaDAO.getListaPaginado(first, page);  //Aqui um método que possa ser passado por parametro o dados da paginação
    return carretas; //Retorna uma lista com somente os dados já filtrados no banco
}

@Override
public Object getRowKey(Carreta object) {
    return object;
}

@Override
public Carreta getRowData(String rowKey) {
    return super.getRowData(rowKey);
}

}[/code]

CarretaMBean

[code]public class CarretaMBean implements Serializable {
@PostConstruct
public void init(){
setLazyModel(new LazyCarretaDataModel(carretaDAO));
}

public LazyDataModel getLazyModel() {
return lazyModel;
}

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

}[/code]

carreta.xhtml

[code]<p:dataTable id=“dtCarreta” value="#{carretaMBean.lazyModel}" lazy=“true” var=“item” paginator=“true” rows=“5"
emptyMessage=”#{msgs.dtVazia}" rowsPerPageTemplate=“5,10,15” selection="#{carretaMBean.selectedCarretas}“
paginatorTemplate=”{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink}
{LastPageLink} {RowsPerPageDropdown}" rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? ‘even-row’ : ‘odd-row’}"
rowIndexVar=“rowIx”>

                <f:facet name="header">
                    <p:commandButton id="cbtGravar" value="#{msgs.cbtGravar}" update="frmCadastrarCarreta:pgSalvar"
                                     oncomplete="multiCarDialog.show()" image="ui-icon-disk">
                        <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtAlterar}" />
                        <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtSalvar}" />
                        <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtLimpar}" />
                        <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.dSalvar}" />
                    </p:commandButton>

                    <p:commandButton id="cbtEditar" value="#{msgs.cbtAlterar}"
                                     update="frmCadastrarCarreta:pgSalvar, frmCadastrarCarreta:msgs"
                                     oncomplete="editar(xhr, status, args)"
                                     image="ui-icon-disk"
                                     action="#{carretaMBean.editar}">
                        <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.cbtAlterar}" />
                        <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtSalvar}" />
                        <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.cbtLimpar}" />
                        <f:setPropertyActionListener value="#{false}" target="#{carretaMBean.dSalvar}" />
                    </p:commandButton>

                    <p:commandButton id="btnExcluirCarreta" value="#{msgs.cbtExcluirCarreta}"
                                     image="ui-icon ui-icon-close" oncomplete="excluir(xhr, status, args)"
                                     action="#{carretaMBean.excluir}" update="frmCadastrarCarreta:msgs">
                        <f:setPropertyActionListener value="#{item}" target="#{carretaMBean.selectedCarreta}" />
                        <f:setPropertyActionListener value="#{true}" target="#{carretaMBean.dSalvar}" />
                    </p:commandButton>
                </f:facet>

                <p:column selectionMode="multiple" />
                <p:column id="clnCodCarreta" style="width: 50px" >
                    <f:facet name="header">
                        <h:outputText id="optCodigoCarreta" value="#{msgs.optTableCodigoCarreta}" />
                        <br/>
                        <p:inputText id="iptFiltroCodCarreta" value="#{carretaMBean.codigo}" size="12">
                            <p:ajax event="keyup" update="dtCarreta" listener="#{carretaMBean.buscaCodigo}" oncomplete="FocoFiltrarCod(xhr, status, args)"/>
                        </p:inputText>
                    </f:facet>
                    <h:outputText value="#{item.codigocarreta}"/>
                </p:column>
                <p:column id="clnDescricaoCarreta">
                    <f:facet name="header">
                        <h:outputText id="optDescricaoCarreta"
                                      value="#{msgs.optTableDescricaoCarreta}" />
                    </f:facet>
                    <h:outputText value="#{item.descricao}"/>
                </p:column>
                <p:column id="clnPlaca" sortBy="#{item.placa}" filterBy="#{item.placa}">
                    <f:facet name="header">
                        <h:outputText value="#{msgs.optTablePlacaCarreta}" />
                    </f:facet>
                    <h:outputText value="#{item.placa}"/>
                </p:column>
                <p:column id="clnAno" sortBy="#{item.ano}" filterBy="#{item.ano}">
                    <f:facet name="header">
                        <h:outputText value="#{msgs.optTableAnoCarreta}" />
                    </f:facet>
                    <h:outputText value="#{item.ano}"/>
                </p:column>
                <p:column id="clnCor" sortBy="#{item.cor}" filterBy="#{item.cor}">
                    <f:facet name="header">
                        <h:outputText value="#{msgs.optTableCorCarreta}" />
                    </f:facet>
                    <h:outputText value="#{item.cor}"/>
                </p:column>
                <p:column id="clnCarroceira" sortBy="#{item.carroceria.descricao}"
                          filterBy="#{item.carroceria.descricao}">
                    <f:facet name="header">
                        <h:outputText value="#{msgs.optTableCarroceriaCarreta}" />
                    </f:facet>
                    <h:outputText value="#{item.carroceria.descricao}"/>
                </p:column>

                <f:facet name="footer">
                    <h:outputText value="#{msgs.contaRegistros} #{carretaMBean.carretas.rowCount}"/>
                </f:facet>
            </p:dataTable>[/code]

O problema é que não aparece nenhum dado na tabela. Alguém tem alguma ideia?
Abraço.