Hibernate 休眠查询列表中项目的位置

Hibernate 休眠查询列表中项目的位置,hibernate,hql,Hibernate,Hql,有人能在 申请名单?在.hbm文件中的以下查询生成一个解析 例外情况: <query name="Nutrient.findNutrients1"> <![CDATA[from Nutrient as nutrient where nutrient.id in elements(?)]]> </query> 例外情况如下: PARSER.reportError(56)|第2:95行: 应为IDENT,找到“?” SessionFactoryImp

有人能在 申请名单?在.hbm文件中的以下查询生成一个解析 例外情况:

<query name="Nutrient.findNutrients1">
    <![CDATA[from Nutrient as nutrient where nutrient.id in elements(?)]]>
</query>

例外情况如下:

PARSER.reportError(56)|第2:95行: 应为IDENT,找到“?” SessionFactoryImpl.(395)|错误 在命名查询中: 营养素1 org.hibernate.hql.ast.QuerySyntaxException: 应为标识,在第行附近找到“?” 2,第95栏[来自营养素as 营养素,其中nutrient.id位于 元素(?)


删除查询的
元素
部分:

<query name="Nutrient.findNutrients1">
    <![CDATA[from Nutrient as nutrient where nutrient.id in (:ids)]]>
</query>

然后像这样调用它:

List<Long> vals = Arrays.asList(1L, 2L);

Query q = session.getNamedQuery("Nutrient.findNutrients1");
q.setParameterList("ids", vals);
List<Nutrient> result = q.list();
List vals=Arrays.asList(1L,2L);
Query q=session.getNamedQuery(“Nutrient.findNutrients1”);
q、 设置参数列表(“ID”,VAL);
列表结果=q.List();

谢谢。但是,我不知道如何在.hbm文件中定义的查询中使用命名参数-我认为您需要在整个会话中使用命名参数…您知道是否可以通过.hbm完成吗?@Greg您可以在命名查询中使用位置参数或命名参数。但这不是重要的部分。如果您选择r:)@Pascal而不是remove,您是否介意添加一点内容来说明如何在此上下文中传递命名参数?@Gred我应该在我的初始答案中这样做。请参阅我的更新。@Pascal很抱歉需要在此处显示,但您是否也会显示使用位置参数的查询版本?(我肯定我在做一些愚蠢的事情,但这并不是我所期望的那样)