2016-04-24 66 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; 
} 
相关问题