Как правильно написать 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 (час)
);

Ответы (0 шт):