我有一个Hibernate查询:
getSession()
.createQuery("from Entity where id in :ids")
.setParameterList("ids", ids)
.list();
字符串
其中ids是集合id,它可以包含很多id。目前,当集合非常大时,我会遇到异常:java.io.IOException:试图发送一个超出范围的整数作为一个2字节的值,我听说postgre有一些问题。但我找不到解决方案如何重写它在hql。
4条答案
按热度按时间s4n0splo1#
由于PostgreSQL的限制,每条语句只能有32767个绑定变量,因此发生了异常。作为一种可能的解决方法,尝试将大型查询拆分为较小的查询。
a2mppw5e2#
在较新的PostgreSQL驱动程序42.4.0中,现在最多可以传递65,535条记录。
修复:现在支持最多65535(含)个参数的查询(以前的限制为32767)PR #2525,Issue #1311
来源:https://jdbc.postgresql.org/changelogs/2022-06-09-42.4.0-release/
nx7onnlm3#
如果你不想将大型查询拆分成较小的查询,你可以使用JDBC:ResultSet executeQuery()
jfgube3f4#
尝试在
:ids
周围添加括号,即:字符串