Ir para conteúdo
Fórum Script Brasil

guimas_244

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre guimas_244

guimas_244's Achievements

0

Reputação

  1. 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: public class CondutorDao { private final EntityManager entityManager; public CondutorDao() { entityManager = JPAUtil.getEntityManagerFactory().createEntityManager(); } public List<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; } } public Long Count(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") public class CondutorRest extends ResourceConfig { public CondutorRest() { register(ResponseCorsFilter.class); } private final CondutorDao repository = new CondutorDao(); @GET @Produces(MediaType.APPLICATION_JSON) @Path("/listaCondutor") public Response 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 banco if (condutor != null) { Result resultado = new Result(); 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; return Response.status(200).entity(resultado).build(); } else { ResultError error = new ResultError(); error.error_message = "Not Found"; error.type = "Not Found"; Result resultado = new Result(); resultado.type = "error"; resultado.status = 404; resultado.results = error; return Response.status(404).entity(resultado).build(); } } }
×
×
  • Criar Novo...