在Hibernate 3.2.2中使用IN子句的本地SQL查询

14
类似于这里找到的问题:Using IN clause in a native sql query;我尝试通过Hibernate中的本地SQL查询来使用IN()子句。虽然其他问题的作者能够使用JPA,但我不行。此外,我被困在3.2.2版本中。
似乎Hibernate不支持IN(),因为它正在尝试将我的ID列表(长整型数组)转换为二进制形式,以应用查询参数:query.setParameter("publisherGroups", [1243536264532,1243536264533,1243536264535]); 来自Hibernate: 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版本是否支持?如果不支持,我有哪些替代方案?
谢谢,
Carl
1个回答

39

我自己回答了问题,发帖之前应该先看官方文档。"诀窍"是使用query.setParameterList()而不是query.setParameter()


谢谢你为我解决了这个问题 :) - Rake36
添加解决方案,请输入数字 1。 - Chad
如何使用unnest()?您有任何想法吗? - wutzebaer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接