public int getItemCount() { CriteriaBuilder criteriaBuilder = db.session().getCriteriaBuilder(); CriteriaQuery<Long> query = criteriaBuilder.createQuery(Long.class); Root<T> root = query.from(clazz); Predicate[] predicates = buildFilters(root); if (predicates != null) query.where(predicates); query.select(criteriaBuilder.count(root)); return db.session().createQuery(query).getSingleResult().intValue(); }
private CriteriaQuery<T> createQueryByParam(String param, Object value, boolean withFilter) { CriteriaBuilder criteriaBuilder = db.session().getCriteriaBuilder(); CriteriaQuery<T> query = criteriaBuilder.createQuery(clazz); Root<T> root = query.from(clazz); Predicate equals = criteriaBuilder.equal(root.get(param), value); query.where(equals); if (withFilter) { Predicate[] predicates = buildFilters(root); if (predicates != null) { //overrides previous predicates query.where(criteriaBuilder.and(criteriaBuilder.and(predicates), equals)); } } query.select(root); return query; }
public List<T> getAll(int offset, int limit, Map<String,Boolean> orders) { CriteriaBuilder criteriaBuilder = db.session().getCriteriaBuilder(); CriteriaQuery<T> query = criteriaBuilder.createQuery(clazz); Root<T> root = query.from(clazz); List<Order> orderList = new ArrayList<>(); //ORDERS if (orders != null) { for (Map.Entry<String, Boolean> entry : orders.entrySet()) { OrderImpl order = new OrderImpl(root.get(entry.getKey()), entry.getValue()); orderList.add(order); } } Predicate[] predicates = buildFilters(root); if (predicates != null) query.where(predicates); query.select(root); query.orderBy(orderList); Query queryImp = db.session().createQuery(query); if (limit != -1) { queryImp.setMaxResults(limit); } List<T> list = queryImp .setFirstResult(offset) .getResultList(); return list; }