我在开发中使用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();
答案 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)