use*_*648 6 nhibernate hibernate hql nhibernate-mapping fluent-nhibernate
我有两个日期搜索字段,即从和到.我必须从用户表中检索记录,其startDate位于搜索字段中输入的from和to日期之间,如果from和to日期为null,则必须从user表中检索所有记录.
我尝试了以下hql查询:
FROM USER
WHERE
:start_flag =1
OR
STARTDATE between :from and :to
Run Code Online (Sandbox Code Playgroud)
这里start_flag的类型为int,如果from和to为null,则设置为1.
query.setParameter("from",startDt);
query.setParameter("to",endDt);
query.setParameter("start_flag",startFlag);
l= query.list();
Run Code Online (Sandbox Code Playgroud)
这里的数据类型是:
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();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33942 次 |
最近记录: |