我正在尝试将整数列表传递给SQLQuery。但是它会引发错误"Exception : could not locate named parameter [ids]; nested exception is org.hibernate.QueryParameterException: could not locate named parameter [ids]"
这就是我的查询:
List<Integer> ids = new ArrayList<Integer>(5);
//Fill something in ids
return session.createSQLQuery("select igf.foo_id from group_feed igf where igf.id in (:ids)")
.setMaxResults(pageSize)
.setParameterList("ids", ids)
.setResultTransformer(Transformers.aliasToBean(GroupFeed.class))
.list();
我做错了什么?我不允许setParameterList
使用Hibernate SQLQuery
吗?我无法从jBoss中的Hibernate文档中获得很多东西。
答案 0 :(得分:-1)
List<Integer> ids = new ArrayList<Integer>(5);
生成一个具有5个插槽容量的空列表:
ids {null, null, null, null, null}
for (Integer i : ids) {
System.out.println("" + i);
}
不打印任何东西。列表是空的。
您确定列表中至少填充了一个项目吗?
Hibernate
查找参数的方式我认为你必须:
return session.createSQLQuery("select igf.foo_id from group_feed igf where igf.id in ( :ids )")
.setMaxResults(pageSize)
.setParameterList("ids", ids)
.setResultTransformer(Transformers.aliasToBean(GroupFeed.class))
.list();
我认为Hibernate
不知道:ids
,因为它是(:ids)
。