2012-05-07 49 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() –