HQL

2010-06-09 2 views
0

Я хочу construt на запрос HQL какHQL

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

Я делаю таким образом, но получаю сообщение об ошибке при установке параметров

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

где я делаю неправильно? Пожалуйста, помогите в выполнении этого запроса на основе hwl, имеющего в разделе

ответ

1

Вам необходимо назначить список параметров в запросе. Также обратите внимание на скобки вокруг параметра, потому что это запрос «in».

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

Вы можете прочитать больше о том, как использовать параметры в HQL в the hibernate reference, но это соответствующий пример вставили оттуда:

//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();