hql查询形成

时间:2010-06-09 06:57:27

标签: java hibernate

我想修改像

这样的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);
}

我做错了什么?请帮助执行具有in子句

的基于hwl的查询

1 个答案:

答案 0 :(得分: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();