CriteriaQuery返回错误的结果

问题描述 投票:1回答:1

我的CriteriaQuery仅返回一条记录,并且应该为dateFrom ='2019-12-10'dateTo ='2019-12-20'提供两条记录而且我不知道为什么...请帮助!

这是我的数据库截图。

enter image description here

这是我的查询:

        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();
java mysql hibernate entitymanager criteriaquery
1个回答
0
投票

我通过查询解决了我的问题,效果很好。

        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;
© www.soinside.com 2019 - 2024. All rights reserved.