mysql - 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 来实现它?
解决方案
您可以使用CREATE FUNCTION 语法创建一个函数,该函数将采用该整数参数,创建您自己的方言并使用 JPQL function('myfunction', :param)
,如本文所述。
否则,您将不得不使用本机 SQL。
推荐阅读
- python - 如何删除使用旧版本 Python/Pip 安装的软件包?
- java - 验证扫描仪输入时出错,包含两个带一个空格的单词
- r - R中用于返回正则表达式中匹配的单词数的语法是什么?
- node.js - 该脚本在终端中运行,但不适用于 js exec()
- sprite - 从头精灵没有一致地记录命中
- javascript - 我想做一些操作并根据我在另一个 AOB 中得到的结果创建新的对象数组
- mysql - 请帮我列出每个社区最喜欢和评论最多的前 2 个故事
- shell - Uniq 一列并打印出该列中的行数
- spring-boot - 如何测试 Spring Boot 应用程序每天早上在特定时间运行的 cron 作业?
- java - 为什么我们有两种方法可以在 android 的视图上添加事件监听器?