Дата проверки между двумя другими датами spring данных jpa

У меня есть эта модель:

public class Event {
    private String name;
    private Date start;
    private Date end;
}

и репозиторий как

@Repository
public interface EventRepository extends JpaRepository<Event, Long> {
    List<Event> findByEventTypeAccount(Account account);
}

Что я хочу сделать, я отправлю одну дату и вам нужно будет проверить, что дата находится между start и end например (я передам sept 30 в качестве даты и вам нужно будет найти все записи, которые прошли через 30 между их start и end)

Что-то вроде findDateisBetweenStartAndEnd(Date date)?

Ответ 1

Вы должны посмотреть справочную документацию. Это хорошо объяснено.

В вашем случае, я думаю, вы не можете использовать между ними, потому что вам нужно передать два параметра

Между - findByStartDateBetween... где x.startDate между? 1 и? 2

В вашем случае взгляните на использование комбинации LessThan или LessThanEqual с GreaterThan или GreaterThanEqual

  • LessThan/LessThanEqual

LessThan - findByEndLessThan... где x.start <? 1

LessThanEqual findByEndLessThanEqual... где x.start < =? 1

  • GreaterThan/GreaterThanEqual

GreaterThan - findByStartGreaterThan... где x.end > ? 1

GreaterThanEqual - findByStartGreaterThanEqual... где x.end > =? 1

Вы можете использовать оператор And и Or для объединения обоих.

Ответ 2

Я использовал следующее решение для этого:

findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);

Ответ 3

Вы также можете написать собственный запрос, используя @Query

@Query(value = "from EntityClassTable t where yourDate BETWEEN :startDate AND :endDate")
public List<EntityClassTable> getAllBetweenDates(@Param("startDate")Date startDate,@Param("endDate")Date endDate);