我有两个日期搜索字段,即 from 和 to。我必须从用户表中检索其 startDate 位于搜索字段中输入的起始日期和结束日期之间的记录,如果起始日期和结束日期为空,我必须从用户表中检索所有记录。
我尝试了以下 hql 查询:
FROM USER
WHERE
:start_flag =1
OR
STARTDATE between :from and :to
这里 start_flag 是 int 类型,如果 from 和 to 为空,则设置为 1。
query.setParameter("from",startDt);
query.setParameter("to",endDt);
query.setParameter("start_flag",startFlag);
l= query.list();
这里的数据类型是:
startDt - java.util.Date
endDt-java.util.Date
startFlag-int
当我使用to 和 from 等于 null运行上述查询时,我得到以下异常:
SQL 错误:932,SQL 状态:42000
ORA-00932: 不一致的数据类型: 预期 DATE 得到 BINARY
您能告诉我如何编写 HQL 查询来实现上述功能吗?