Java + Hibernate + (JSF)Primefaces

19/12/2017

0

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="      "
             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>`
Marcio Doas

Marcio Doas

Responder

Posts

03/01/2018

Rander Freitas

Olá Marcio,

Na documentação do primefaces tem vários exemplos de como se implementa essa classe lazydatamodel. Segue o link:

https://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml

No exemplo acima, basta clicar na aba LazyCarDataModel.java para você ver um exemplo de como implementar os métodos dessa classe.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar