gpt4 book ai didi

hibernate - 如何在hql中的两个日期之间动态搜索?

转载 作者:行者123 更新时间:2023-12-04 14:14:21 26 4
gpt4 key购买 nike

我有两个日期搜索字段,即 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,SQLState:42000

ORA-00932: 不一致的数据类型:预期 DATE 为 BINARY

你能告诉我如何编写 HQL 查询来实现上述功能吗?

最佳答案

像这样过滤它:

String query = "FROM USER WHERE :start_flag =1 ";
if(startDt!=null && endDt!=null){
query +="OR STARTDATE between :start_date and :end_date";
}

TypedQuery<USER> hql = entityManager.createQuery(query);

if(startDt!=null && endDt!=null){
hql.setParameter("start_date",startDt).setParameter("end_date",endDt);
}
List<USER> result = hql.setParameter("start_flag",startFlag).list();

关于hibernate - 如何在hql中的两个日期之间动态搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17233900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com