我的CriteriaQuery仅返回一条记录,并且应该为dateFrom ='2019-12-10'和dateTo ='2019-12-20'提供两条记录而且我不知道为什么...请帮助!
这是我的数据库截图。
这是我的查询:
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();
我通过查询解决了我的问题,效果很好。
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;