日期:2014-05-16  浏览次数:20587 次

请教Hibernate操作oracle数据库产生随机数问题
开发项目过程中,根据需求需要查询时随机产生记录,因此,我通过产生随机数获取随机值,进行查询记录。
但在开发过程Hibernate在执行SQL语句时,却执行产生随机数函数时报错。
代码:
tringBuffer hql = new StringBuffer("select trunc(dbms_random.value(min(rec_id),max(rec_id)+1)) from MemberInfo tbl ");
List list = getHibernateTemplate().find(hql.toString());
return list;

在数据库执行可以得到结果,但在程序中执行出现异常,请大家指正。不胜感激。
报错如下:
org.springframework.orm.hibernate3.HibernateQueryException: unexpected AST node:
在网上查询后,无法得到答案。
无奈之下只得提前产生随机数,既而查询时进行
Query q = s.createQuery(hql.toString());
q.setFirstResult(随机数);
q.setMaxResults(随机数);
进行查询。
不知道是否还有更好的解决办法。
1 楼 shmily 2006-09-28  
个人觉得RandomUtils.nextInt(1000)也可以实现随机查询的条件,但每次只能产生一条随机数,在需求要求中需要查询多条的情况下就有点问题了。
2 楼 抛出异常的爱 2006-09-28  
shmily 写道
个人觉得RandomUtils.nextInt(1000)也可以实现随机查询的条件,但每次只能产生一条随机数,在需求要求中需要查询多条的情况下就有点问题了。


你写的东西得不到隋机数
种子不变
那么得到的数也不会变的。。。。。
一般会用下一回的结果当种子放入到函数中
static int  z = 1000;
public int getR(){
z = RadomUtils.nextInt(z);
return z;
}