在Hibernate Query中更改setParameter

时间:2013-09-19 15:04:41

标签: java hibernate spring-mvc hql

如您所见,我有两个命名参数,一个由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;
}

1 个答案:

答案 0 :(得分:3)

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

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

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

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