2016-04-25 9 views
1

を照会し、私は、エンティティの疑問を持っていると私は、データベースからの私の質問を生成するランダムはランダムに質問を生成した:私はJPQLでランダムに質問を生成したい

@Override 
public List<Question> prepareRandomTest(int number_of_questions, Categorie categorie){ 

      String jpql = "SELECT q FROM Question q where q.categorie=:categorie"; 
      Query query = entityManager.createQuery(jpql); 
      query.setParameter("categorie", categorie); 
      query.setMaxResults(number_of_questions); 
      return query.getResultList(); 

} 

これが私のメイン

Categorie categorie; 
categorie=GestionCategorieDelegate.doFindCategorieById(1); 

List<Question> questions=new ArrayList<>(); 
    questions=GestionTestDelegate.doPrepareRandomTest(1, categorie); 
    for (Question q : questions) 
    { 

     System.out.println(q); 
    } 
} 
+2

を入れることができますので、あなたの質問は何ですか? –

+0

質問が無作為に表示されるようにしたい – Daly

+2

これはおそらく役に立ちますか? http://stackoverflow.com/questions/2459119/random-select-rows-via-jpa – eol

答えて

1
です

あなたのリストにCollecions.shuffleを使用できます。

のでdoPrepareRandomTest代わりの

return query.getResultList(); 

にあなたは

List<Questions> result = query.getResultList(); 
Collections.shuffle(result); 
return result; 
+0

同じ答えを書き始めました。 Webで理解するのは難しいですが、JPQLが 'random() 'をもうサポートしていないようですので、javaを使ったランダムシャッフルはやり方です!私を打つためのPawel +10。 –

+0

@Paweł.Ch私はあなたに解決策を試しましたが、質問はランダムに生成されません。常に最初の質問が生成されます。 – Daly

関連する問題