将位置参数更改为 HQL 中的命名参数
change positional parameters to named parameters in HQL
我现在正在将hiberate升级到5,需要将所有位置参数(在5中删除)更改为命名参数。
我对如何在 "mutiple ? in in-clause" 中使用命名参数有疑问。
例如,我有一个查询
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???
如果您使用 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);
我现在正在将hiberate升级到5,需要将所有位置参数(在5中删除)更改为命名参数。 我对如何在 "mutiple ? in in-clause" 中使用命名参数有疑问。 例如,我有一个查询
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???
如果您使用 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);