Estou desenvolvendo um sistema que já está paginado (limit e offset) mas quando determino um limit ele gera um conflito no result_count (no caso é o total de resultados)
Estou utilizando hibernate e criteria, postgres, java ee, tenho uma classe Dao que trata toda conexão com o banco postgres.
Em anexo as classes CondutorDao e o CondutorRest:
publicclassCondutorDao{private final EntityManager entityManager;publicCondutorDao(){
entityManager =JPAUtil.getEntityManagerFactory().createEntityManager();}publicList<Condutor>Consultar(String sql,int limit,int offset){try{this.entityManager.getTransaction().begin();TypedQuery<Condutor> query =this.entityManager.createQuery(sql,Condutor.class).setFirstResult(offset).setMaxResults(limit);if(query.getResultList().size()>0){return query.getResultList();}else{return null;}}catch(Exception ex){return null;}}publicLongCount(String sql){try{CriteriaBuilder qb = entityManager.getCriteriaBuilder();CriteriaQuery<Long> cq = qb.createQuery(Long.class);
cq.select(qb.count(cq.from(Condutor.class)));
cq.where(/*your stuff*/);return entityManager.createQuery(cq).getSingleResult();}catch(Exception ex){return null;}}}@Path("/condutor")publicclassCondutorRest extends ResourceConfig{publicCondutorRest(){register(ResponseCorsFilter.class);}private final CondutorDao repository =newCondutorDao();@GET@Produces(MediaType.APPLICATION_JSON)@Path("/listaCondutor")publicResponse getTitular(@QueryParam("limit")int limit,@QueryParam("offset")int offset){List<Condutor> condutor = repository.Consultar("SELECT p FROM Condutor p", limit, offset);//limit e offset que é utilizado para paginar limita o count que é pra mostrar o total de resultados que existe no bancoif(condutor != null){Result resultado =newResult();
repository.Count("SELECT (*) FROM Condutor c");
resultado.type ="success";
resultado.status =200;
resultado.limit = limit;
resultado.offset = offset;
resultado.result_count = condutor.size();
resultado.results = condutor;returnResponse.status(200).entity(resultado).build();}else{ResultError error =newResultError();
error.error_message ="Not Found";
error.type ="Not Found";Result resultado =newResult();
resultado.type ="error";
resultado.status =404;
resultado.results = error;returnResponse.status(404).entity(resultado).build();}}}
Pergunta
guimas_244
Estou desenvolvendo um sistema que já está paginado (limit e offset) mas quando determino um limit ele gera um conflito no result_count (no caso é o total de resultados)
Estou utilizando hibernate e criteria, postgres, java ee, tenho uma classe Dao que trata toda conexão com o banco postgres.
Em anexo as classes CondutorDao e o CondutorRest:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.