java util Сравнение дат с Criteria api не работает должным образом - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь отфильтровать некоторые данные из базы данных, используя between CriteriaBuilder. Я использую 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));

Кто-нибудь сталкивался с такими проблемами. Пожалуйста, помогите мне разобраться.

1 Ответ

0 голосов
/ 15 января 2020

Пожалуйста, попробуйте:

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