Я бы посоветовал вам перейти на использование диапазона даты / времени вместо одного значения. Это также будет работать лучше в запросе, если таблица будет иметь индекс на event_id, start
Примерно так:
@Query(value = "SELECT *" +
" FROM show s" +
" WHERE s.event_id = :eventId" +
" AND s.start >= :startDate" +
" AND s.start < :endDate", nativeQuery = true)
Page<Show> findAllFiltered(@Param("eventId") Long eventId,
@Param("startDate") LocalDateTime startDate,
@Param("endDate") LocalDateTime endDate,
Pageable page);
Обратите внимание, что endDate
является эксклюзивным, как это обычно делается со всеми операциями диапазона в Java.
Затем вы можете добавить вспомогательный метод, если хотите:
Page<Show> findAllFiltered(@Param("eventId") Long eventId,
@Param("dateSearch") LocalDateTime dateSearch,
Pageable page) {
LocalDateTime startDate = dateSearch.truncatedTo(ChronoUnit.DAYS);
LocalDateTime endDate = startDate.plusDays(1);
return findAllFiltered(eventId, startDate, endDate, page);
}