大侠帮忙!!!!!!!!!!Hibernate HQL 子查询 的问题, 急,在线等!!!!

kevinhewanjun 2008-05-18 03:27:55
nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ( near line 1, column 134 [select count(*) from com.hibernate.dao.Customer c where c.tracetype = '1' and c.company.comid = 1 and c.cusid in ( select cusid from (select cusid, count(*) as times from com.hibernate.dao.Tracerecord where tracetime >= '2008-05-05 00:00:00' and tracetime <= '2008-05-05 00:00:00' group by cusid ) where times <= 1 and times >= 2 )]

等高手帮忙处理上面一句代码.
...全文
109 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevinhewanjun 2008-05-18
  • 打赏
  • 举报
回复
问题已解决.是写HQL时Tracerecord t的字段cusid必须写成t.customer.cusid.
哎,老是忘记表关系中hibernate的表示法.
kevinhewanjun 2008-05-18
  • 打赏
  • 举报
回复
我用的是oracle,时间我用的是字符串,在数据库中执行下面SQL没问题:
select cusid from (select cusid, count(*) as times from Tracerecord where tracetime >= '2008-05-05 00:00:00' and tracetime <= '2008-05-04 00:00:00' group by cusid) where times <= 1 and times >= 2;
但用HQL就是不行.
maodie007 2008-05-18
  • 打赏
  • 举报
回复
好像是日期格式的错误 '2008-05-05 00:00:00'
你最好以参数的形式试下

Query query=session.CreateQuery("from tablename where date between ? and ?").setParameter(0,date1).setParameter(1,date2);
date1和date2
必须为日期类型数据
试下吧

HQL 和SQL还是又点区别的 SQL 可以直接用类似tracetime >= '2008-05-05 00:00:00'
jdlsfl 2008-05-18
  • 打赏
  • 举报
回复
sql语法问题,什么数据库
在数据库中执行sql试试看

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧