Spring Data JPA возвращает список дат с указанным диапазоном (дата начала и дата окончания) - PullRequest
0 голосов
/ 18 февраля 2020

В настоящее время я пытаюсь вернуть список объектов с датой, попадающей в диапазон, заданный параметрами ... Однако, когда я запускаю свой вызов api rest, ничего не возвращается. Я не уверен, правильно ли я выполняю этот запрос Spring JPA, и решил получить некоторую обратную связь, независимо от того, что я сделал неправильно.

Вот краткий псевдокод:

Объектная модель

public class mResult{
/* other variables */
LocalDate runDate;
}

Репо

public interface mResultRepository extends CrudRepository<mResult,String> {
    List<mResult> findAllByRunDateBetween(LocalDate startDate,LocalDate endDate);
}

Сервис

mResultRepository mRepository;

public List<mResult> getAllBetweenDates(LocalDate startDate, LocalDate endDate){
     return mRepository.findAllByRunDateBetween(startDate,endDate);
 }

Мой репозиторий содержит JSON объектов, например:

{"runDate": "2019-02-05"}
{"runDate": "2019-02-06"}
{"runDate": "2019-02-10}

Если мой диапазон 2019 -02-01 до 2019-02-09, то он должен возвращать только те, которые находятся в этом диапазоне. Однако, когда я запускаю свой запрос API, ничего не возвращается. Является ли мой запрос Spring JPA правильным? ТИА

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Я добавил аннотацию @DateTimeFormat к своему контроллеру. Оказывается, что запрос Spring JPA был верным, но он не принимался в моем формате "гггг-мм-дд".

0 голосов
/ 18 февраля 2020

У меня была такая же проблема некоторое время назад, я пытаюсь найти решение на уровне базы данных, но я не нашел подходящего способа решения на уровне БД, поэтому я бы предпочел, чтобы она была решена с Java сторона в качестве примера кода, приведенного ниже.

List<LocalDate> runningDates = Stream.iterate(startDate, date -> date.plusDays(1))
            .limit(ChronoUnit.DAYS.between(startDate, endDate.plusDays(1)))
            .collect(Collectors.toList());

Я считаю, что это поможет вам.

...