代码之家  ›  专栏  ›  技术社区  ›  user3369592

在hql中将位置参数更改为命名参数

  •  0
  • user3369592  · 技术社区  · 6 年前

    我现在将Hiberate升级到5,需要将所有位置参数(在5中删除)更改为命名参数。 我有一个问题是如何在“multiple”中使用命名参数?在条款中”。 例如,我有一个查询

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

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

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

    所以“index”可以帮助我动态生成hql查询中的索引位置。如果我想用命名参数替换这个查询,我们通常怎么做? 我们做一些像

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Pallav Jha    6 年前

    如果你在使用 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);