浏览 2815 次
|
锁定老贴子 主题:hibernate里面如何实现随机查询呢?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2006-07-19
比如说数据库里面有1000条记录,我根据某种约束条件选中了其中了100条。但我如何实现在这100个对象里面随机的抽取一个对象呢?必须保证每次取道的对象不同。
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2006-07-20
用取分页的方法setFirstResult setFetchSize,只取一条,随机分页.比较笨的方法,不过避免了取多余的数据
|
|
| 返回顶楼 | |
|
时间:2006-07-20
先select count(*)把符合条件的纪录数量得到,然后产生随机数0-(N-1),取出这条记录
如果你要反复取而且结果与上次不同,就先把纪录的ID读到一个数组,比如Long[] ID,第一次随机产生[0, length)之间的数,取出ID[rnd],然后把数组的ID[rnd]和最后一个元素交换,第二次随机产生[0, length-1)之间的数,取出ID[2nd],也把它与倒数第二个交换,……保证length次随机没有重复。 |
|
| 返回顶楼 | |
|
时间:2006-07-20
今天刚学了下
mysql select * from t order by rand() limit ? |
|
| 返回顶楼 | |
|
时间:2006-08-04
我用Hibernate查询后将所有的对象都放进一个list里面,然后在取出的时候随机取出。我用系统时间做种子产生一个随机数i,然后list.get(i),这样就得到了随机取对象了。
楼上的用mysql支持的limit字段可以实现,但其他的数据库不支持这个关键字的,程序的可移植性不强哦 |
|
| 返回顶楼 | |
|
时间:2006-08-04
做个可以随机生成数据的视图,然后Hibernate就象访问表一样地去访问这个视图返回结果就可以了。
|
|
| 返回顶楼 | |
|
时间:2006-08-14
wptree 写道 我用Hibernate查询后将所有的对象都放进一个list里面,然后在取出的时候随机取出。我用系统时间做种子产生一个随机数i,然后list.get(i),这样就得到了随机取对象了。
楼上的用mysql支持的limit字段可以实现,但其他的数据库不支持这个关键字的,程序的可移植性不强哦 唉,会死得很惨的, |
|
| 返回顶楼 | |
|
时间:2007-04-06
楼上的说的对,我就遇到这么个问题了,死的很惨,总数据达到几十w条,符合条件的记录有10w条出来的时候,系统就死!查了下资料,我是没好方法,只能用hql order by rand() limit
|
|
| 返回顶楼 | |








