2010-04-27 16 views
5

tengo tabla como la de abajohibernate restrictions.in con y, cómo usar?

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 

cómo consultar con Restriction.in mediante la combinación de abajo y en una en la declaración?

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

Respuesta

5

Creo que esta es la combinación de criterios que desea utilizar (por cierto, es más fácil para ayudar con la definición bean de entidad de hibernación en lugar de la estructura de la tabla.):

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

Las restricciones se añaden a la criterios como cláusulas AND por defecto. En este caso, el código es correcto, pero sería más simple si las dos restricciones se agregaran directamente a los criterios en lugar de anidar en una instrucción Restrictions.and. – Rachel

+0

Gracias, es bueno saberlo. Parece que hice algunas consultas más complicadas de lo que realmente debían ser. – Daff