2016-04-25 134 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

刚刚开始写相同的答案。在网络中很难理解,但似乎JPQL不再支持'random()',所以使用java进行随机随机播放将是一种好方法!帕维尔+10击败我。 –

+0

@Paweł.Ch我试过你的解决方案,但问题不是随机生成的,它总是第一个问题产生 – Daly