Spring JPA查询注释中的日期时间算法

时间:2019-03-14 13:26:29

标签: java spring datetime jpa

我有一个带有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 个答案:

答案 0 :(得分:1)

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);
}