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();
		}
	}
}