2016-04-24 15 views
-1

私はテストを自動的に準備する方法を実装したい テストは一組の質問であり、テストは自動的に準備されなければならない 質問データベースからランダムに表示されます。私はテストを準備する方法を実装したい

enter image description here

私はsql queryは次のようにあることを知っている:

SELECT q FROM Question ORDER BY RAND() LIMIT ...; 

このクラスのテストが提供するすべてのサービスを懸念パッケージ

package tn.esen.services.gestion.test; 

@Stateless 
public class GestionTest implements GestionTestRemote, GestionTestLocal { 
@PersistenceContext 
private EntityManager entityManager; 
/** 
* Default constructor. 
*/ 
public GestionTest() { 
    // TODO Auto-generated constructor stub 
} 
@Override 
public boolean addTest(Test test) { 
    try { 
     entityManager.persist(test); 
     return true; 
    } catch (Exception e) { 
     System.err.println("Impossible de créer un Test"); 
    }  return false; 
} 
@Override 
public boolean updateTest(Test test) { 
    try { 
     entityManager.merge(test); 
     return true; 
    } catch (Exception e) { 
     System.err.println("Impossible de mettre à jour un test"); 
    }  return false; 
} 
@Override 
public boolean deleteTest(Test test) { 

    try { 
     entityManager.remove(entityManager.merge(test)); 
     return true; 
    } catch (Exception e) { 
     System.err.println("Impossible de supprimer un test"); 
    }  return false; 
} 
@Override 
public List<Test> readAllTest() { 
    String jpql = "select t from Test t "; 
    Query query = entityManager.createQuery(jpql); 
    return query.getResultList();  
} 
@Override 
public Test findTestById(Integer id) { 
    return (Test) entityManager.find(Test.class, id); 
} 
@Override 
public List<Test> findAllTestByCandidat(Candidat candidat) { 
Query query=entityManager.createQuery("select distinct t from Test t join  t.resultats r where r.candidat=:cand"); 
query.setParameter("cand", candidat); 
return query.getResultList(); 

答えて

1

ソリューション
はあなたを想定あなたの質問のために質問団体を持っているbleは、フェッチは非常に簡単です、ちょうど任意の(number_of_questions)質問のテーブルからランダムでの質問のテーブルから取得します。

public List<Question> prepareRandomTest(int number_of_questions){ 
    String sql = "SELECT * FROM question ORDER BY RANDOM() LIMIT "+number_of_questions; 
    SQLQuery query = session.createSQLQuery(sql); 
    query.addEntity(Question.class); 
    List<Question> results = (List<Question>)query.list(); 
    return result; 
} 
関連する問題