изменить позиционные параметры на именованные параметры в HQL - PullRequest
0 голосов
/ 29 января 2019

Я обновляю hiberate до 5 сейчас, и мне нужно изменить все параметры позиции (удалено в 5) на именованные параметры.У меня есть вопрос о том, как использовать именованные параметры в "mutiple? 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 ???

1 Ответ

0 голосов
/ 29 января 2019

Если вы используете 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...