【发布时间】:2011-12-07 04:13:38
【问题描述】:
我知道这个问题被发了很多次了,但是我想问一下细节,
使用 Oracle,您不能向 IN 子句传递超过 1000 个参数,因此使用带有 oracle 的 hibernate 可能有一些解决此问题的方法,例如:
1- 在每个 1000 参数列表的 IN 子句之间使用 OR 子句,但由于 oracle 对整个查询参数不超过 2000 的其他限制,这不适用
2-使用for循环,每次查询1000个参数列表,然后追加所有结果,如果需要排序,或者使用不同级别修改的criteria api,这不是很好
p>3-将参数列表放在临时物理表中,然后加入它,甚至在子条件中使用它,这个解决方案我无法尝试,因为我不知道如何使用创建临时表休眠,然后使用它,
所以如果有任何其他使用 CRITERIA api 的想法,请分享它,或者即使有一种简单的方法来处理解决方案编号“3”
问候,
【问题讨论】:
-
您能否发布一个查询示例,该查询导致 IN 子句中的值超过 1000 个?
-
您可以考虑任何查询,例如从表中选择 2000 条记录,甚至将 2000 个参数的列表作为输入传递,我认为这不是问题
-
什么时候需要传递 2000 个参数作为输入?对我来说听起来像是一种代码味道。