Дата проверки между двумя другими датами 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 - 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);