如您所见,我有两个命名参数,一个由setParameterList()设置,另一个由setParmeter()设置。问题是没有订购List。当我明确设置订单字段时它工作正常,但相同的字符串被传递到它不起作用的方法。是不是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;
}
答案 0 :(得分:3)
不,这不是方法链的问题。问题是您不能使用命名参数在HQL(或SQL)查询中设置ORDER
。
您需要单独构建查询字符串,然后在创建的:medium
对象上设置Query
命名参数。
String query = "from Subject where medium in(:medium) order by " + orda;
这可能会让您容易受到SQL注入攻击。