这个sql改为hql怎么写?

oceans0501 2009-11-03 11:25:38
select id from subject s where s.levels=? and s.field_by_code=? and s.field_by_project=? ORDER BY rand() limit ?
把这个sql改为hql该怎么写,谢谢
...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主要实现的是 rand() 函数,也就是从表中随机选取一定数量的记录,这涉及数据库特有的语法,在 HQL 中是做不到的!
xuyang840117 2009-11-03
  • 打赏
  • 举报
回复

Query query = this.getSession().createQuery(queryString);
query.setFirstResult(startRow);
query.setMaxResults(pageSize);//limit 要在这里表示 startRow = 0 ,pageSize = limit


limit 我在pgsql用过
closewbq 2009-11-03
  • 打赏
  • 举报
回复
基本没什么不同,注意查询的是类不是表就行了!
dinghun8leech 2009-11-03
  • 打赏
  • 举报
回复
from subject where levels = xxx and field_by_code = xxx and s.field_by_project = xxx ORDER BY rand()
大致这么写。
分页的话用Query接口的setFirstResult(int start)方法和setMaxResults(int end)方法,不建议手写使用limit,因为limit不是所有数据库都支持。使用上述两个方法设置起止点的话hibernate会根据配置中的数据库方言来转换为适合此数据库的分页部分sql。
  • 打赏
  • 举报
回复
你以为 HQL 是万能的?使用原生 SQL 查询吧!
oceans0501 2009-11-03
  • 打赏
  • 举报
回复
用的是mysql,提示limit不对
道光2008 2009-11-03
  • 打赏
  • 举报
回复
应该可以
指定为sqlsever的方言测试下
oceans0501 2009-11-03
  • 打赏
  • 举报
回复
hql中有这个方法吗rand()

67,512

社区成员

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

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