2016-04-24 69 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

解決方案
假設你你的問題Ta有一個問題實體這個提取非常簡單,只需從RANDOM的問題表中的問題列表中取出任何(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; 
} 
相關問題