2014-07-18 3 views
0

다음 쿼리를 sql에서 최대 절전 모드로 변환하려고 시도하고 있습니다. 운이 좋지 않습니다.Hibernate는 다음 절을 order by 절로 중첩합니다.

select * from person order by (person_id in (1,4,7)), last_name; 

ids는 일종의 Collection에서 온 입력 값의 예입니다. 어떤 도움을 주시면 감사하겠습니다. 감사.

답변

1

당신은 쿼리에 대한 매개 변수로 목록을 전달할 수 있습니다, 나머지 쿼리는 동일합니다, 아래 쿼리 중 하나가 작동합니다.

Query query = session.createQuery("from Person order by (persionId in (:ids)), lastName").setParameterList("ids", idList); 

또는

Query query = session.createQuery("from Person order by (CASE WHEN persionId in (:ids) THEN 0 ELSE 1 END), lastName").setParameterList("ids", idList); 
+0

감사 alot을! 첫 번째 제안은 나를 위해 효과가 없었지만 두 번째 제안은 효과가있었습니다. – DroidT