2010-04-27 40 views
5

Tôi có bảng như dưới đâyhibernate restrict.in với và, làm thế nào để sử dụng?

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 

làm thế nào để truy vấn với Restriction.in bằng cách kết hợp dưới đây và vào một TRÊN tuyên bố?

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

Trả lời

5

Tôi nghĩ rằng đây là sự kết hợp tiêu chí mà bạn muốn sử dụng (btw nó dễ dàng hơn để giúp đỡ với định nghĩa bean thực thể Hibernate thay vì cấu trúc bảng.):

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

Hạn chế được thêm vào tiêu chí như AND mệnh đề theo mặc định. Trong trường hợp này, mã là đúng, nhưng sẽ đơn giản hơn nếu hai hạn chế được thêm trực tiếp vào các tiêu chí thay vì được lồng trong câu lệnh Restrictions.and. – Rachel

+0

Cảm ơn bạn, rất vui được biết. Có vẻ như sau đó tôi đã thực hiện một số truy vấn phức tạp hơn họ thực sự cần thiết. – Daff

Các vấn đề liên quan