2012-05-07 2 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 Citeria

ответ

0

Я думаю, что лучшим решением было бы определить автоматически увеличивающийся числовой идентификатор для объекта Student, затем случайным образом получить 3 значения (между самым низким ID и наибольшим идентификатором), чтобы вы могли использовать критерий, такой как:

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

Благодарим за комментарий. Я думаю, что лучше пойти с hql и использовать порядок по rand() –

Смежные вопросы