[Java util与Criteria api的日期比较无法正常工作

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

我正在尝试使用CriteriaBuilder的between从数据库中过滤掉一些数据。我将java.util.Date用于输入和实体列。我总是会按输入日期获得结果-1.例如如果我的输入日期为16-12-2019,那么我也将获取15-12-2019的数据。我无法理解这种奇怪的行为。我正在使用以下方法:

predicates.add(criteriaBuilder.between(root.get(Constants.COL_REGISTRATION_DATE),
                    registrationStartDate, registrationEndDate));

我也尝试了下面的方法,但结果仍然相同。

Predicate startDatePredicate = criteriaBuilder.greaterThanOrEqualTo(root.get(Constants.COL_REGISTRATION_DATE), registrationStartDate);
            Predicate endDatePredicate = criteriaBuilder.lessThanOrEqualTo(root.get(Constants.COL_REGISTRATION_DATE), registrationEndDate);

            predicates.add(criteriaBuilder.and(startDatePredicate, endDatePredicate));

没有人遇到这样的问题。请帮我解决这个问题。

java jpa criteria criteria-api
1个回答
0
投票

请尝试:

predicates.add(criteriaBuilder.between(root.get(Constants.COL_REGISTRATION_DATE),
                LocalDate.parse(registrationStartDate), 
                LocalDate.parse(registrationEndDate))
);
© www.soinside.com 2019 - 2024. All rights reserved.