PostgreSQL和Hibernate java.io.IOException:试图将超出范围的整数作为2字节值发送

4uqofj5v  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(4)|浏览(99)

我有一个Hibernate查询:

getSession()                     
        .createQuery("from Entity where id in :ids") 
        .setParameterList("ids", ids)
        .list();

字符串
其中ids是集合id,它可以包含很多id。目前,当集合非常大时,我会遇到异常:java.io.IOException:试图发送一个超出范围的整数作为一个2字节的值,我听说postgre有一些问题。但我找不到解决方案如何重写它在hql。

s4n0splo

s4n0splo1#

由于PostgreSQL的限制,每条语句只能有32767个绑定变量,因此发生了异常。作为一种可能的解决方法,尝试将大型查询拆分为较小的查询。

a2mppw5e

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/

nx7onnlm

nx7onnlm3#

如果你不想将大型查询拆分成较小的查询,你可以使用JDBC:ResultSet executeQuery()

jfgube3f

jfgube3f4#

尝试在:ids周围添加括号,即:

"from Entity where id in (:ids)"

字符串

相关问题