dha*_*ram 1 sql dateadd spring-data-jpa jpa-2.1
我必须搜索超过 6 个月的行。我已插入时间(日期时间)作为表中的列之一。如果它是一个 sql 查询,它就像这样直接:-
select * from myTable where insertTime<=dateadd(month, -6, getDate());
Run Code Online (Sandbox Code Playgroud)
但我使用的是 JPA,所以我必须写这样的东西:-
select * from myTable where insertTime<=function('DATEADD',month, -6, function('getDate'));
Run Code Online (Sandbox Code Playgroud)
我不确定如何在上面的查询中添加月份参数。
我在上述查询中收到以下错误
创建名称为“myRepository”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: 查询验证失败 ....
我应该如何在上面的查询中添加月份字段?可以通过JPA吗?
提前致谢。
感谢SPeL 支持,您可以尝试使用以下技巧:
public interface MyEntityRepo extends JpaRepository<MyEntity, Integer> {
@Query("select e from MyEntity e where e.createdAt <= ?#{@myEntityRepo.sixMonthsBefore()}")
List<MyEntity> getAllSixMonthsOld();
default Instant sixMonthsBefore() {
return Instant.now().minus(6, ChronoUnit.MONTHS);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2556 次 |
| 最近记录: |