我的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();发布于 2020-01-12 00:40:11
我用查询解决了我的问题,它运行得很好。
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;https://stackoverflow.com/questions/59690861
复制相似问题