论坛首页 Java版 Hibernate

hibernate里面如何实现随机查询呢?

浏览 2815 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2006-07-19
比如说数据库里面有1000条记录,我根据某种约束条件选中了其中了100条。但我如何实现在这100个对象里面随机的抽取一个对象呢?必须保证每次取道的对象不同。
   
时间:2006-07-20
用取分页的方法setFirstResult setFetchSize,只取一条,随机分页.比较笨的方法,不过避免了取多余的数据
   
0 请登录后投票
时间:2006-07-20
先select count(*)把符合条件的纪录数量得到,然后产生随机数0-(N-1),取出这条记录

如果你要反复取而且结果与上次不同,就先把纪录的ID读到一个数组,比如Long[] ID,第一次随机产生[0, length)之间的数,取出ID[rnd],然后把数组的ID[rnd]和最后一个元素交换,第二次随机产生[0, length-1)之间的数,取出ID[2nd],也把它与倒数第二个交换,……保证length次随机没有重复。
   
0 请登录后投票
时间:2006-07-20
今天刚学了下
mysql
select * from t order by rand() limit ?
   
0 请登录后投票
时间:2006-08-04
我用Hibernate查询后将所有的对象都放进一个list里面,然后在取出的时候随机取出。我用系统时间做种子产生一个随机数i,然后list.get(i),这样就得到了随机取对象了。
楼上的用mysql支持的limit字段可以实现,但其他的数据库不支持这个关键字的,程序的可移植性不强哦
   
0 请登录后投票
时间:2006-08-04
做个可以随机生成数据的视图,然后Hibernate就象访问表一样地去访问这个视图返回结果就可以了。
   
0 请登录后投票
时间:2006-08-14
wptree 写道
我用Hibernate查询后将所有的对象都放进一个list里面,然后在取出的时候随机取出。我用系统时间做种子产生一个随机数i,然后list.get(i),这样就得到了随机取对象了。
楼上的用mysql支持的limit字段可以实现,但其他的数据库不支持这个关键字的,程序的可移植性不强哦

唉,会死得很惨的,
   
0 请登录后投票
时间:2007-04-06
楼上的说的对,我就遇到这么个问题了,死的很惨,总数据达到几十w条,符合条件的记录有10w条出来的时候,系统就死!查了下资料,我是没好方法,只能用hql order by rand() limit
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐