java - 从 JPQL 中的 current_date 中减去年份
问题描述
我想删除超过 2 年的行。在 SQL 中,我这样做:
DELETE FROM table WHERE creation_date < (current_date - interval '2 year');
现在我想用 JPQL 为我的 Java 中的 JPA 存储库做同样的事情。在 JPQL 中我收到一个错误,因为间隔未知并且“-”(减号)不正确。
JPQL 查询
@Query("DELETE FROM table t WHERE t.creation_date < (current_date - interval '2 year')")
我会很感激任何建议。
解决方案
您可以在应用程序中计算 dateTime,假设您正在LocalDateTime
使用creation_date
LocalDateTime dateTime = LocalDateTime.now().minus(Period.ofYears(2));
并在 JPQL 中传递参数
@Query("DELETE FROM table t WHERE t.creation_date < :dateTime")
void deleteByDateTime(LocalDateTime dateTime)