0

如您所见,我有两个命名参数,一个由 setParameterList() 设置,一个由 setParmeter() 设置。问题是列表没有被订购。当我明确设置 order 字段时,它工作正常,但是相同的字符串被传递到它不起作用的方法中。是不是 setParameter 和 setParameterList 不能链接?他们都返回一个查询,我不明白为什么不。我错过了什么?

public List<Subject> getSubjectsByMedium(String orda, Medium... medium) {
    List<Subject> subjects = currentSession().createQuery("from Subject where medium in(:medium) order by :orda").setParameterList("medium", medium).setParameter("orda", orda).list();
    return Subjects;
}
4

1 回答 1

3

不,这不是方法链接的问题。问题是您不能使用命名参数ORDER在 HQL(或 SQL)查询中设置。

您需要单独构建查询字符串,然后在创建的对象上设置:medium命名参数。Query

String query = "from Subject where medium in(:medium) order by " + orda;

这可能会使您容易受到 SQL 注入的攻击。

于 2013-09-19T15:07:25.530 回答