1

My CriteriaQuery returns only one record and should two for dateFrom = '2019-12-10' and dateTo = '2019-12-20' And i don't know why.

This is my screenshot from database.

enter image description here

And this is my query:

        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        CriteriaQuery<Reservation> reservationQuery  = criteriaBuilder.createQuery(Reservation.class);
        Root<Reservation> reservationRoot = reservationQuery.from(Reservation.class);

        Predicate dateFrom = criteriaBuilder.greaterThanOrEqualTo(reservationRoot.get("dateFrom"), reservationDto.getDateFrom());
        Predicate dateTo = criteriaBuilder.lessThanOrEqualTo(reservationRoot.get("dateTo"), reservationDto.getDateTo());

        reservationQuery.where(dateFrom, dateTo);
        TypedQuery<Reservation> res = entityManager.createQuery(reservationQuery);
        List<Reservation> result = res.getResultList();
Volkan Albayrak
  • 329
  • 1
  • 11
PrzemekC
  • 21
  • 1
  • 3

1 Answers1

-1

I solved my problem with query, it works fine.

        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        CriteriaQuery<Reservation> reservationQuery  = criteriaBuilder.createQuery(Reservation.class);
        Root<Reservation> reservationRoot = reservationQuery.from(Reservation.class);

        Predicate dateFrom = criteriaBuilder.greaterThanOrEqualTo(reservationRoot.get("dateFrom"), reservationDto.getDateFrom());
        Predicate dateTo = criteriaBuilder.lessThanOrEqualTo(reservationRoot.get("dateTo"), reservationDto.getDateTo());

        criteriaBuilder.and(dateFrom);
        criteriaBuilder.and(dateTo);
//        reservationQuery.where(dateFrom, dateTo);
        TypedQuery<Reservation> res = entityManager.createQuery(reservationQuery);
        List<Reservation> result = res.getResultList();
        return result;
PrzemekC
  • 21
  • 1
  • 3