将H2 SQL查询转换为JPQL

时间:2019-02-19 14:04:41

标签: spring-data-jpa h2 jpql

我在开发中使用H2数据库,我编写了一个本机查询,仅支持H2。我现在想将其转换为JPQL,因此我可以在生产模式下使用它。

在查询中,我使用的是DATE_ADD函数,该函数将数据库中的值添加到当前日期,我尝试在JPQL中搜索等效项,但未成功。

@Modifying
@Transactional
@Query(
        value = "UPDATE ORDER_TABLE O SET O.STATE='CANCELED' WHERE O.STATE='PENDING' AND DATEADD('HOUR',SELECT P.VALUE FROM PARAMETER P WHERE P.NAME ='PENDING_ORDER_TTL' , O.CREATED_AT) < NOW()",
        nativeQuery = true)
void updatePendingOrder();

1 个答案:

答案 0 :(得分:1)

您需要使用Java计算日期:

@Query(value = "UPDATE Order o SET o.state='CANCELED'" + 
             " WHERE o.state='PENDING' AND o.createdAt < :cutOff")
@Modifying
//Date/LocalDate/LocalDateTime or whatever
public void updateOrders(@Param("cutOff") Date cutOff)