在列表中使用条件的Hibernate SQLQuery

时间:2012-03-15 13:41:51

标签: mysql sql spring hibernate

我正在尝试将整数列表传递给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文档中获得很多东西。

1 个答案:

答案 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)