Задать вопрос
@maestro07

Как в jpa repository взять данные по дате?

Мне надо взять данные по дате. Например все данные за 2020-02-19.

Написал такой запрос
List<Client> findByUserIdAndRegistrationDate(UUID id, Date date);


запрос: ..../a42cea80-480a-11ea-a82f-00155d101a20/2020-02-19

5ea2f6cb062f3790272973.png

в базе есть данные. специально отправляю такой запрос так как знаю что есть данные.

Может быть из за того что я отправляю 2020-02-19 а в базе 2020-02-19 23:36:00 и они не равны
  • Вопрос задан
  • 672 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
1. Для поиска по дате по всем пользователям (а в вопросе я не увидел, что нужна выборка по одному пользователю) UUID использовать не нужно.
2. Да
Может быть из за того что я отправляю 2020-02-19 а в базе 2020-02-19 23:36:00 и они не равны
так и есть, дата в данном случае дополняется 00:00:00, то есть поиск происходит на начало дня.
3. Как писал azerphoenix выше для получения списка Client нужно использовать findAll.
4. Вам нужно использовать
findAllByRegistrationDateBetween(дата_начала_периода, дата_окончания_периода)

5. К дате начала и конца периода можно добавлять время. К дате начала периода 00:00:00 к дате конца периода 23:59:59 для корректной выборки. Если не добавлять время, то нужно к дате окончания периода прибывать один день, выборка в целом будет корректна.
6. Если всё таки нужна выборка по конкретному пользователю, то используем всё тоже самое, но добавляем userId:
findAllByUserIdAndRegistrationDateBetween(user_id, дата_начала_периода, дата_окончания_периода)
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
List<Client> findByUserIdAndRegistrationDate(UUID id, Date date);


Во-первых,
findAllBy если хотите получить список, вместо findBy

Во-вторых, можете показать как именно вы храните в entity дату? LocalDate, LocalDateTime, Date и т.д.
Ответ написан
Комментировать
@RabyAliaksandr
используй Date из java.sql.Date и не заморачивайся
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы