sql - 'Interval' 的 JPA Hibernate 查询问题

标签 sql spring-boot hibernate jpa

我需要为我的后端应用程序检索过去 6 个月的订单。

 @Query("Select ord From orders ord WHERE ord.created_date  <= (current_date  - INTERVAL '6 months')")
    List<Order> findOrders();
unexpected token: INTERVAL near line 1, column 70 [Select ord From orders ord WHERE ord.created_date  <= (current_date  INTERVAL '6 months')

经过一些研究,我发现 JPA 不支持 INTERVAL 定义。 是否有归档此特定功能的解决方法?

最佳答案

您可以通过在 Java 代码中计算的日期来参数化您的存储库方法。假设 created_dateInstant 类型,它将类似于:

@Query("FROM orders ord WHERE ord.created_date  >= :fromDate")
List<Order> findOrders(Instant fromDate);

并调用它

Instant fromDate = Instant.now().minus(Duration.ofDays(182));
yourRepository.findOrders(fromDate)

关于sql - 'Interval' 的 JPA Hibernate 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64716077/

相关文章:

Java:Spring boot Tomcat 访问日志未在 Tomcat 启动时创建

java - ninjaframework 中的表未映射错误

mysql - SQL - 1388 字符 SQL 查询。 (必须是更简单的解决方案吗?)

sql - Hive 外部表由逗号分隔,但数据中存在逗号

sql - 在 T-SQL 中使用任意数量的参数

sql - 我可以在 JOIN 条件中使用 CASE 语句吗?

java - Google Vision 使用 Java 客户端库批注图像

spring-boot - 如何使用 @EnableWebMvc 在 Spring boot 中提供静态资源

java - spring-data-jpa: ORA-01795: 列表中表达式的最大数量为 1000

java - 如何从 Hibernate 调用 MySQL 存储过程