views:

84

answers:

1

I have table like below

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

how to query with Restriction.in by combining below AND into one IN statement?

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

I think this is the criteria combination you want to use (btw. it is easier to help with the Hibernate entity bean definition instead of the table structure):

String[] employeeNames = { "test", "test2" };
List<Survey> surveys = getSession().createCriteria(Survey.class).add(
        Restrictions.and
        (
            Restrictions.eq("surveyNumber", 1),
            Restrictions.in("employeeName", employeeNames)
        )
    ).list();
Daff
Restrictions are added to the criteria as AND clauses by default. In this case the code is correct, but would be simpler if the two restrictions were added directly to the criteria instead of nested in a Restrictions.and statement.
Rachel
Thank you, good to know. Seems as if I then made some queries more complicated than they actually needed to be.
Daff