2010-06-09 5 views
0
내가 잘못하고있는 중이 야 어디 매개 변수

HQL 질의 형성

s=('a','b'); 
Query q = getSession().createQuery("select planId from RoutePlan where assignedTo in REG "); 
if(selUsers != null) { 
    q.setParameter("REG", s); 
} 

설정에

select PLAN_ID from "GPIL_DB"."ROUTE_PLAN" where ASSIGNED_TO 
     in ('prav','sheet') and END_DATE > todays date 

내가 이런 식으로 일을하지만 오류가 점점 오전 같은 HQL 질의를 construt 할

? 이 절을 기반으로 hwl 기반 쿼리를 실행하는 데 도움을주십시오.

답변

1

쿼리에 매개 변수 목록을 지정해야합니다. 'in'쿼리이기 때문에 매개 변수 주위에 대괄호를 적어 둡니다.

Query q = getSession() 
     .createQuery("select planId from RoutePlan where assignedTo in (:REG) "); 
if(selUsers != null) { 
    q.setParameterList("REG", s); 
} 
당신은 the hibernate reference에 HQL에서 매개 변수를 사용하는 방법에 대한 자세한 내용을보실 수 있습니다,하지만 거기에서 붙여 넣기 관련 예입니다

:

//named parameter list 
List names = new ArrayList(); 
names.add("Izi"); 
names.add("Fritz"); 
Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)"); 
q.setParameterList("namesList", names); 
List cats = q.list();