2012-05-07 46 views
1
Criteria crit=getSession().createCriteria(Student.class); 
crit.add(Restrictions.not(Restrictions.like("studentName", "John"))); 
int count=crit.list().size(); 
int index=new Random().nextInt(count); 
crit.setFirstResult(index).setMaxResults(3); 

这段代码只返回第一个结果为随机数和下三个连续的行(不是随机数)。我想获得3个随机行。用Hibernate获取多个随机行Citia

回答

0

我认为最好的解决方案是为Student实体定义一个自动递增的数字ID,然后随机获得3个值(在最低ID和最大ID之间),以便您可以使用以下标准:

Restrictions.in("id", {randomVal1, randomVal2, randomVal3}) 
+0

感谢您的评论我认为它更好地去与hql和使用秩序rand() –