【问题标题】:change positional parameters to named parameters in HQL将位置参数更改为 HQL 中的命名参数
【发布时间】:2019-01-28 22:47:29
【问题描述】:

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

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???

【问题讨论】:

    标签: sql hibernate hql


    【解决方案1】:

    如果您使用的是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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 2015-11-16
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 2017-12-30
      • 2016-01-08
      相关资源
      最近更新 更多