JPA Hibernate 查询“Interval”的问题

Elt*_*mon 2 sql hibernate jpa spring-boot

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

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

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

小智 6

您可以通过 java 代码内计算的日期来参数化您的存储库方法。假设created_date是类型,Instant它会是这样的:

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

并调用它

Instant fromDate = Instant.now().minus(Duration.ofDays(182));
yourRepository.findOrders(fromDate)
Run Code Online (Sandbox Code Playgroud)