简体   繁体   English

CriteriaQuery 返回错误结果

[英]CriteriaQuery returning wrong result

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.我的 CriteriaQuery 只返回一条记录,对于dateFrom = '2019-12-10'dateTo = '2019-12-20'应该有两条记录,我不知道为什么。

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM