休眠Date_add的createQuery()

时间:2018-10-10 09:19:54

标签: mysql hibernate hsqldb dateadd 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来实现它?

1 个答案:

答案 0 :(得分:0)

您可以使用CREATE FUNCTION syntax创建一个函数,该函数将使用该整数参数,创建自己的方言并使用JPQL function('myfunction', :param),如in this article所述。

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