Как правильно написать JPQL запрос использую COALESCE
Есть запрос который вернет евенты:
@Query(
"SELECT e "
+ "FROM Event e "
+ "WHERE e.Id =:id "
+ "AND e.eventsDate >= COALESCE(e.startDate, :eventDateStart) "
+ "AND e.eventsDate <= COALESCE(e.endDate, :eventDateEnd) "
)
@Nonnull
List<Event>findEvents(
@Param("id") Long id,
@Param("eventDateStart") LocalDateTime eventDateStart,
@Param("eventDateEnd") LocalDateTime eventDateEnd
);
Можно ли в блоке COALESCE если первое значение не null вычесть из него несколько часов, у startDate и endDate тип LocalDateTime,не могу найти как это сделать на JPQL, нативный запрос кидать не хочу в БД.
Должно получится что-то такое:
@Query(
"SELECT e "
+ "FROM Event e "
+ "WHERE e.Id =:id "
+ "AND e.eventsDate >= COALESCE(e.startDate -:deviation1/24, :eventDateStart)"
+ "AND e.eventsDate <= COALESCE(e.endDate +:deviation2/24, :eventDateEnd) "
)
@Nonnull
List<Event>findEvents(
@Param("id") Long id,
@Param("eventDateStart") LocalDateTime eventDateStart,
@Param("eventDateEnd") LocalDateTime eventDateEnd,
@Param("deviation1") Long deviation1 (час),
@Param("deviation2") Long deviation2 (час)
);