Será que alguém pode me dar uma ajuda, por favor. :’(
Já segui vários vídeos e tutoriais na internet, mas, sempre retorna erro.
Aparentemente para mim esta tudo certo, mas não carrega a os dados.
O principal problema é isso
Lazy loading is not implemented.
Controler da DataTable
private LazyDataModel<Pessoa> dataModel;
public LazyDataModel<Pessoa> getDataModel() {
return dataModel;
}
@PostConstruct
public void init()
{
this.dataModel = new LazyDataModel<Pessoa>()
{
private static final long serialVersionUID = 1L;
@Override
public ArrayList<Pessoa> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters)
{
setRowCount(new PessoaDAO().getTotalRegistros().intValue());
return (ArrayList<Pessoa>) new PessoaDAO().consultaPaginacao(first, pageSize, sortField, SortOrder.ASCENDING.equals(sortOrder));
}
};
}
``
DAO
``
public List<Pessoa> consultaPaginacao(int first, int pageSize, String sortField, boolean asc)
{
ArrayList<Pessoa> listaRetorno = new ArrayList<>();
EntityManager manager = new JpaUtil().getEntityManagerFactory();
try
{
Query consulta = (Query) manager.createQuery("from Pessoa");
consulta.setFirstResult(first);
consulta.setMaxResults(pageSize);
listaRetorno = (ArrayList<Pessoa>) consulta.getResultList();
}
finally
{
manager.close();
}
return listaRetorno;
}
public Long getTotalRegistros()
{
Long lngRetorno = 0L;
EntityManager manager = new JpaUtil().getEntityManagerFactory();
try
{
Query consulta = (Query) manager.createQuery("SELECT count(t) from Pessoa as t")
.getSingleResult();
lngRetorno = (Long) consulta.getSingleResult();
}
finally
{
manager.close();
}
return lngRetorno;
}
``
Xhtml
``
<p:dataTable var="pessoa"
value="#{controlerPessoa.dataModel}"
paginator="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
rows="5"
lazy="true"
sortMode="multiple">
<p:column headerText="Id">
<h:outputText value="#{pessoa.idPessoa}" />
</p:column>
<p:column headerText="Nome">
<h:outputText value="#{pessoa.nomePessoa}" />
</p:column>
</p:dataTable>`
``