首页 > 解决方案 > Date_add 的休眠 createQuery()

问题描述

我正在尝试在休眠 HSQL 中实现以下 SQL 查询。而不是值“7”,我必须传递一个动态值“交付”。

SELECT quote_key , delivery_date 
  FROM Orders 
  WHERE delivery_date >= DATE_ADD(now(), INTERVAL '-7' DAY); 

DAO 层:

String sql = " FROM Orders where deliveryDate >= DATE_ADD(now(), INTERVAL -(:delivery) " + " DAY)";

Query query = session.createQuery(sql);
query.setParameter("delivery", delivery);
List<Orders> mergedData = query.list();

我收到以下错误:

意外标记:DAY

对于我尝试的任何语法。有没有办法使用 HSQL 本身而不是 Native SQL 来实现它?

标签: mysqlhibernatehsqldbdateaddcreatequery

解决方案


您可以使用CREATE FUNCTION 语法创建一个函数,该函数将采用该整数参数,创建您自己的方言并使用 JPQL function('myfunction', :param),如本文所述

否则,您将不得不使用本机 SQL。


推荐阅读