2014-01-07 1 views
2

나는 의사가 있습니다. 각 의사는 다른 실체 인 HealthInsurance 목록을 가지고 있습니다.최대 절전 모드 : 조건을 사용하여 목록별로 필터링

내 목표는 HealthInsurance의 사용자 선택을 기반으로 검색 시스템을 만드는 것입니다. 나는 적어도 1 개의 건강 보험이있는 모든 의사를 사용자 건강 보험 목록에 포함시켜야합니다. 이런 식으로 뭔가가 :

Criteria criteria = session.createCriteria(Doctor.class); 
criteria.add(Restrictions.in("healthInsurances", userHealthInsurances)); 
return criteria.list(); 

하지만이 코드는 다음과 같은 예외를 throw하지 않습니다 : java.sql.SQLException의를 : 매개 변수 1.

에 대해 지정되지 값을 사용하여이 기준 일을 어떤 방법이 있나요?

답변

4
Criteria criteria = session.createCriteria(Doctor.class); 
criteria.createCriteria("healthInsurances").add(Restrictions.in("id", userSelectedIds)); 
return criteria.list(); 

createAlias을 통해 동일한 기능을 사용할 수 있습니다. 더 많은 예제를 보려면 this을보십시오.

+0

감사합니다. ID 목록 대신 엔티티 목록을 표시하므로 ID 목록을 생성하지 않고도 동일한 작업을 수행 할 수있는 방법이 있습니까? –

+0

'HealthInsurance' 객체의'equals' 메소드와'hashCode' 메소드를 id로 덮어 쓰고'in' 메소드의 매개 변수로'userHealthInsurances'리스트를 넘겨 주면 작동 할 수도 있습니다; 하지만 이것에 대해 확실하지 않다;) –

+0

당신은 내가 그 질문에서 제안하는 것을 의미합니까? 이 때 내가 말한 오류가 발생합니다 (java.sql.SQLException : 매개 변수 1에 지정된 값이 없습니다). 그리고 당신이 말한 것을 유지하지만 "userSelectedIds"를 "userHealthInsurances"로 변경하면 다음 오류가 발생합니다. java.lang.ClassCastException : HealthInsurance를 Long으로 형변환 할 수 없습니다. –