hibernate里,怎么随机取出一条数据?

ligang626 2013-09-27 03:21:14
用hibernate,怎么随机取出一条数据?
我用的是oracle,在oracle里直接用sql语句,用top或limit,都可以,但是,把sql语句放倒hibernate里就不行。
求解?
...全文
288 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerrygr_ok 2013-10-09
  • 打赏
  • 举报
回复
我写了一个,可我测试的时候有点问题,有时候没有记录,有时候返回好几条记录,我没找到原因在哪儿,大家也帮我看一下

select * from (select rownum rn, e.* from emp e)t where t.rn=round(dbms_random.value(1,(select count(*) from emp)))
Wentasy 2013-10-08
  • 打赏
  • 举报
回复
引用 7 楼 ligang626 的回复:
[quote=引用 5 楼 Wentasy 的回复:] [quote=引用 3 楼 ligang626 的回复:] 在hibernate中执行,不识别limit
不好意思,刚说错了,SQLServer才是top。Oracle中是rownum+子查询。[/quote] 那具体的用法呢?[/quote] 可以看看这篇文章:http://blog.csdn.net/justdb/article/details/8200635
ligang626 2013-10-08
  • 打赏
  • 举报
回复
引用 5 楼 Wentasy 的回复:
[quote=引用 3 楼 ligang626 的回复:] 在hibernate中执行,不识别limit
不好意思,刚说错了,SQLServer才是top。Oracle中是rownum+子查询。[/quote] 那具体的用法呢?
陈字文 2013-09-28
  • 打赏
  • 举报
回复
limit 不支持Oracle 你需要切换 Hibernate 的方言.
Wentasy 2013-09-27
  • 打赏
  • 举报
回复
引用 3 楼 ligang626 的回复:
在hibernate中执行,不识别limit
不好意思,刚说错了,SQLServer才是top。Oracle中是rownum+子查询。
Wentasy 2013-09-27
  • 打赏
  • 举报
回复
引用 2 楼 ligang626 的回复:
select * from usm_item t where t.item_bank_child_id= 4 and t.item_type=1 order by RAND() limit 1; 这是sql语句
limit是MySQL分页用的,Oracle中用top+子查询实现。 可以看看这篇文章:http://blog.csdn.net/justdb/article/details/8200635
ligang626 2013-09-27
  • 打赏
  • 举报
回复
在hibernate中执行,不识别limit
ligang626 2013-09-27
  • 打赏
  • 举报
回复
select * from usm_item t where t.item_bank_child_id= 4 and t.item_type=1 order by RAND() limit 1; 这是sql语句
无敌小二傻 2013-09-27
  • 打赏
  • 举报
回复
楼主用的是12c吗? oracle中怎么用的top呢? 可否把sql贴出来? oracle的随机函数是dbms_random中的

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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