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.
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();
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;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.