Подтвердить что ты не робот

Использование предложения IN в собственном запросе sql с Hibernate 3.2.2

По аналогии с вопросом, найденным здесь: Использование предложения IN в собственном SQL-запросе; Я пытаюсь использовать предложение IN() посредством собственного SQL-запроса в Hibernate. Хотя автор в другом вопросе смог использовать JPA, я не знаю. Кроме того, я застрял с версией 3.2.2.

Кажется, что Hibernate не поддерживает IN() изначально, потому что он пытается преобразовать мой список (массив длинных примитивов) идентификаторов в двоичную форму при применении параметров запроса: query.setParameter("publisherGroups", [1243536264532,1243536264533,1243536264535]);

Из спящего режима:

SELECT sum(C2CReportedConversion) as c2CConversion, sum(C2CReportedRevenue) as c2CRevenue, sum(I2CReportedConversion) as i2CConversion, sum(I2CReportedRevenue) as i2CRevenue, sum(Clicks) as clicks, sum(Impressions) as impressions, sum(Requests) as requests, sum(Views) as views, coalesce(Name, DisplayName) FROM UiTemplateReportingCache JOIN AdUnit USING (AdUnitId) WHERE PublisherId = ? AND PublisherGroupId IN ( ? ) AND Date >= ? AND Date <= ? GROUP BY coalesce(Name, DisplayName)

Из журналов mysql:

SELECT sum(C2CReportedConversion) as c2CConversion, sum(C2CReportedRevenue) as c2CRevenue, sum(I2CReportedConversion) as i2CConversion, sum(I2CReportedRevenue) as i2CRevenue, sum(Clicks) as clicks, sum(Impressions) as impressions, sum(Requests) as requests, sum(Views) as views, coalesce(Name, DisplayName) FROM UiTemplateReportingCache JOIN AdUnit USING (AdUnitId) WHERE PublisherId = 1239660230591 AND PublisherGroupId IN (_binary'��\0ur\0[Jx ��u�\0\0xp\0\0\0 \0\0!���T\0\0!���U\0\0!���W\0\0!���m\0\0!���n\0\0!���t\0\0!���{\0\0!���|\0\0!���}\0\0!���~\0\0#��\0\0$|��S') AND Date >= '2011-03-17 00:00:00' AND Date <= '2011-03-18 23:59:59' GROUP BY coalesce(Name, DisplayName)

Обратите внимание на часть _binary, которая запускает значение IN(). Какая уловка для этого? Будет ли использовать версию Hibernate, которую я использую? Если нет, то какие у меня альтернативы?

Спасибо заранее,

Карл

4b9b3361

Ответ 1

Отвечал мой собственный вопрос и должен был RTFM'd перед публикацией. "Трюк" заключается в использовании query.setParameterList() в отличие от query.setParameter().