2010-04-27 6 views
5

Je table comme ci-dessoushibernate restrictions.in avec et, comment utiliser?

id, employee_no, survey_no, name 
1 test   1   test_name 
2 test2   1   test_name2 
3 test3   1   test_name3 
4 test4   2   test_name4 

comment interroger avec Restriction.in en combinant ci-dessous et dans l'une dans la déclaration?

IN[ (if(survey_no==1) && employee_no== 'test') , 
     (if(survey_no==1) && employee_no== 'test2') , 
     ... 
    ] 

Répondre

5

Je pense que cela est la combinaison de critères que vous souhaitez utiliser (BTW il est plus facile d'aider à la définition de bean entité Hibernate au lieu de la structure de la table.):

String[] employeeNames = { "test", "test2" }; 
List<Survey> surveys = getSession().createCriteria(Survey.class).add(
     Restrictions.and 
     (
      Restrictions.eq("surveyNumber", 1), 
      Restrictions.in("employeeName", employeeNames) 
     ) 
    ).list(); 
+3

Les restrictions sont ajoutées à la critères comme clauses AND par défaut. Dans ce cas, le code est correct, mais serait plus simple si les deux restrictions étaient ajoutées directement aux critères au lieu d'être imbriquées dans une instruction Restrictions.and. – Rachel

+0

Merci, bon à savoir. On dirait que j'ai ensuite fait quelques requêtes plus compliquées qu'elles ne le devaient en réalité. – Daff

Questions connexes