J'ai ce modèle:
public class Event {
private String name;
private Date start;
private Date end;
}
et référentiel comme
@Repository
public interface EventRepository extends JpaRepository<Event, Long> {
List<Event> findByEventTypeAccount(Account account);
}
Ce que je veux faire, c’est que je passe une date et que j’ai besoin de vérifier que la date est comprise entre start
et end
par exemple (je transmettrai la date du 30 sept au lieu de toutes les entrées datant du 30 septembre entre leur start
et end
)
Quelque chose comme findDateisBetweenStartAndEnd(Date date)
?
Vous devriez jeter un oeil la documentation de référence . C'est bien expliqué.
Dans votre cas, je pense que vous ne pouvez pas utiliser car il faut passer deux paramètres
Entre - findByStartDateBetween… où x.startDate entre? 1 et? 2
Dans votre cas, utilisez une combinaison de LessThan
ou LessThanEqual
avec GreaterThan
ou GreaterThanEqual
LessThan - findByEndLessThan… où x.start <? 1
LessThanEqual findByEndLessThanEqual… où x.start <=? 1
GreaterThan - findByStartGreaterThan… où x.end>? 1
GreaterThanEqual - findByStartGreaterThanEqual… où x.end> =? 1
Vous pouvez utiliser l'opérateur And
et Or
pour combiner les deux.
J'ai utilisé la solution suivante pour cela:
findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);
Vous pouvez également écrire une requête personnalisée en utilisant @Query
@Query(value = "from EntityClassTable t where yourDate BETWEEN :startDate AND :endDate")
public List<EntityClassTable> getAllBetweenDates(@Param("startDate")Date startDate,@Param("endDate")Date endDate);