我现在将休眠模式升级到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 ???
答案 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);