I made the following request:
CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<Tuple> queryFilter = builder.createTupleQuery(); Root<MEg> root = queryFilter.from(MEg.class); queryFilter.multiselect(root.get("dInp").alias("dInp"), builder.count(root.get("dInp")).alias("cnt")); queryFilter.groupBy(root.get("dInp")); queryFilter.orderBy(builder.asc(root.get("dInp"))); List<Predicate> predicateList = new ArrayList<>(); Predicate filterApps = builder.between(root.get("dInp").as(Date.class), search.getBegDate(), search.getEndDate()); predicateList.add(filterApps); Predicate[] predicates = new Predicate[predicateList.size()]; predicateList.toArray(predicates); queryFilter.where(predicates); TypedQuery<Tuple> tq = em.createQuery(queryFilter); List<Tuple> t = tq.getResultList(); As a result, it gives the following data:
{"dInp":"08.07.2016","cnt":1}, {"dInp":"08.07.2016","cnt":2}, {"dInp":"08.07.2016","cnt":1}, {"dInp":"08.07.2016","cnt":1}, {"dInp":"12.07.2016","cnt":1}, {"dInp":"13.07.2016","cnt":1}, {"dInp":"13.07.2016","cnt":1}, {"dInp":"13.07.2016","cnt":2} How can I do that he would only deduce one date once and calculate their sum?