Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Lazy loading is not implemented

Segue meu código:

public class LivroDataModel extends LazyDataModel<Livro>{

    private DAO<Livro> dao = new DAO<Livro>(Livro.class);;

    public LivroDataModel() {
        super.setRowCount(dao.quantidadeDeElementos());
    }

    @Override
    public List<Livro> load(int inicio, int quantidade, List<SortMeta> multiSortMeta, Map<String, Object> filtros) {
        String titulo = (String) filtros.get("titulo");

        return dao.listaTodosPaginada(inicio, quantidade, "titulo", titulo);
    }

}
public int quantidadeDeElementos() {
        EntityManager em = new JPAUtil().getEntityManager();
        long result = (Long) em.createQuery("select count(n) from " + classe.getSimpleName() + " n")
                .getSingleResult();
        em.close();

        return (int) result;
    }
public List<T> listaTodosPaginada(int firstResult, int maxResults, String coluna, String valor) {
        EntityManager em = new JPAUtil().getEntityManager();
        CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
        query.select(query.from(classe));
        Root<T> root = query.from(classe);

         if(valor != null)
                query = query.where(em.getCriteriaBuilder().like(root.<String>get(coluna), valor + "%"));

        List<T> lista = em.createQuery(query).setFirstResult(firstResult)
                .setMaxResults(maxResults).getResultList();

        em.close();
        return lista;
    }
<h:form id ="formTabelaLivros">
        <p:dataTable value="#{livroBean.livroDataModel}" var="livro" id="tabelaLivros" 
            paginator="true" rows="5" lazy="true">
@ViewScoped
@ManagedBean
public class LivroBean implements Serializable {

    private LivroDataModel livroDataModel = new LivroDataModel();

    public LivroDataModel getLivroDataModel() {
        return livroDataModel;
    }

    public void setLivroDataModel(LivroDataModel livroDataModel) {
        this.livroDataModel = livroDataModel;
    }

Fiz tudo como explicado no exercício, mas ocorre um erro no lado do servidor "Lazy loading is not implemented"

2 respostas
solução!

Resolvido

Meu também está gerando este erro "Lazy loading is not implemented", na explicação pede para sobre escrever o método load porém quando sobreescrevo da problema no método, também o atributo filtros não tem o método get para passar o titulo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software