任何人都可以使用in为where子句建议正确的语法
应用于列表? .hbm文件中的以下查询生成一个解析
例外:

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


例外如下:


PARSER.reportError(56)|行2:95:
期待IDENT,找到“?”
SessionFactoryImpl。(395)|错误
在命名查询中:
Nutrient.findNutrients1
org.hibernate.hql.ast.QuerySyntaxException:
期待IDENT,找到“?”近线
2,第95列[来自Nutrient as
营养素
元素(?)

最佳答案

删除查询的elements部分:

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

07-23 10:38