我的问题实际上开始于oracle仅支持in(...)谓词中的1000个元素。所以执行类似于
的查询select * from table where column in ({2000 elements});
将导致异常。一些谷歌搜索让我想到将多个谓词中的元素分成1000个元素,如下所示:
select * from table where column in ({1000 elements}) or column in ({1000 elements});
当直接执行查询时,这非常有效,但是当我使用Hibernate session.createSQLQuery()时,它会导致一个带有所有元素的'in'谓词,并且我从数据库中获得异常。
有没有办法禁用此优化或任何其他解决方法? 我正在使用Hibernate 3.2.6,这是遗留项目。