Арифметика даты и времени в аннотации запроса JPA Spring - PullRequest
1 голос
/ 14 марта 2019

У меня есть таблица со столбцом created, которая имеет тип DATETIME и при создании установлена ​​на CURRENT_TIMESTAMP.

У меня также есть репозиторий Spring JPA для обработки указанной таблицы, и я хотел бы создать аннотированный запрос для поиска строк, которые существуют более timeout времени, в следующем стиле:

@Query("SELECT e FROM Entity e WHERE (e.created < CURRENT_TIMESTAMP - timeout")
List<Entity> findOldEntries(@Param("timeout") int timeout);

Каков правильный синтаксис для этого запроса и какие единицы времени ожидания он ожидает?

1 Ответ

1 голос
/ 14 марта 2019

AFAIK JPA не поддерживает периоды времени.Кроме того, вы можете использовать SpEL :

@Query("SELECT e FROM Entity e WHERE (e.created < ?#{@yourRepo.secondsBefore(#timeout))}")
List<Entity> findOldEntries(@Param("timeout") int timeout);

// add a method that returns an Instant that matches your time
default Instant secondsBefore(int seconds) {
    return Instant.now().minus(seconds, ChronoUnit.SECONDS);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...