Java 使用Hibernate条件获取多个随机行

Java 使用Hibernate条件获取多个随机行,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,此代码仅将第一个结果作为随机结果返回,并将接下来的三个连续行(非随机)返回。我希望获得3个随机行。我认为最好的解决方案是为学生实体定义一个自动递增的数字ID,然后随机获得3个值(在最低ID和最高ID之间),以便使用以下标准: Criteria crit=getSession().createCriteria(Student.class); crit.add(Restrictions.not(Restrictions.like("studentName", "John" ))); int co

此代码仅将第一个结果作为随机结果返回,并将接下来的三个连续行(非随机)返回。我希望获得3个随机行。

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

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); 

感谢您的评论,我认为使用hql并使用order by rand()更好
Restrictions.in("id", {randomVal1, randomVal2, randomVal3})