Fórum Java + Hibernate + (JSF)Primefaces #589935

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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

Gostei + 0

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

Aceitar