我想构造一个 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 的查询
最佳答案
您需要在查询中分配参数列表。另请注意参数周围的括号,因为它是“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();
关于java - hql查询形成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3003661/