将位置参数更改为HQL中的命名参数

时间:2019-01-28 22:47:29

标签: sql hibernate hql

我现在将休眠模式升级到5,需要将所有位置参数(在5中删除)更改为命名参数。 我有一个问题,如何在“子句中?”中使用命名参数。 例如,我有一个查询

select people from users where grade in ( ?, ?, ?, ?.......

我不知道“?”的确切数字。在HQL查询中。使用位置参数,我可以简单地

   int index = 0;
   for(Grade g : GradeList) {
      query.setParameter(index++, g);
    }

因此,“索引”可以帮助我在HQL查询中动态生成索引位置。如果我想用命名参数替换此查询,通常我们该怎么做? 我们会做某事吗

String s = "p";
int index = 0;
for(Grade g : GradeList) {
  String ss = s + index++;
  query.setParameter("ss", g);
}

那我应该在查询中输入什么? s1,s2,s3,s4 ???

1 个答案:

答案 0 :(得分:0)

如果您使用org.hibernate.query.Query,则

String queryString = "select people from users where grade IN (:grades)";
// Query query = session.createQuery (queryString);

query.setParameterList("grades", gradeList);

如果您使用的是JPA,则

query.setParameter("grades", gradeList);