HQL 语句报错 join 复杂sql语句 求助!

cbackspace 2015-04-17 11:31:26
@Override
public Info findBySex(Boolean sex){
return (Info)this.getSession().createQuery(" from Info as t1 join (select ROUND(rand()*(select max(bid) from Info ) ) as bid)as t2 where t1.bid>=t2.bid and bsex=?0 and bbutto = true order by t1.bid asc limit 1 ")
.setParameter("0", sex).uniqueResult();
}

报错了! 我的sql在MYSQL执行语句不会报错:

select * from info as t1 join (select ROUND(rand()*(select max(bid) from info ) ) as bid)as t2
where t1.bid>=t2.bid and bsex=0 order by t1.bid asc limit 1; 求帮助
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
何事忧愁 2015-04-19
  • 打赏
  • 举报
回复
一楼说得对,hql里面没有limit ,通过query.setFirstResult()和setMaxResult()来实现分页查询
何事忧愁 2015-04-19
  • 打赏
  • 举报
回复
你这hql语句有问题啊,连接查询怎么会是这样写的呢?hql中是 : 对象 join 对象 on .. 。sql中是 表1 ioin 表2 on... 。(select ROUND(rand()*(select max(bid) from info ) ) as bid)这个查出来的不是对象也不是表 ,只是一个查询的结果。这就相当于 对象 ioin 查询结果 on ...。 这样怎能不报错呢
cbackspace 2015-04-19
  • 打赏
  • 举报
回复
引用 2 楼 guoweiqaz 的回复:
还有hql里面,查询的表是用类名代替的,区分大小写
我懂 只是刚好不巧 建了个小写开头的model 算了 我直接返回要的字段 执行sql语句了
guoweiqaz 2015-04-18
  • 打赏
  • 举报
回复
还有hql里面,查询的表是用类名代替的,区分大小写
guoweiqaz 2015-04-18
  • 打赏
  • 举报
回复
hql里没有limit吧

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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