2010-06-09 4 views
0

Je veux construt une requête HQL commeformation de requête HQL

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

Je suis en train de faire de cette façon, mais obtenir une erreur dans la définition des paramètres

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

où je fais mal? S'il vous plaît aider à l'exécution de cette requête basée sur hwl ayant dans la clause

Répondre

1

Vous devez affecter la liste de paramètres dans la requête. Notez également les crochets entourant le paramètre car il s'agit d'une requête 'in'.

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

Vous pouvez en savoir plus sur la façon d'utiliser des paramètres dans HQL dans the hibernate reference, mais ceci est l'exemple pertinent collé à partir de là:

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