春天hibernatetemplate createSQLQuery在(...)可以在哪里?

时间:2009-12-10 01:16:11

标签: java hibernate spring

是否有任何限制的语句我可以在spring hibernatetemplate的createSQLQuery中使用 where(1,2,3,4,5,6 ....) ()?

3 个答案:

答案 0 :(得分:2)

是的,但是说限制不是由Hibernate或Spring引起的,而是由底层数据库引起的。

例如,Oracle AFAIK在IN()子句中允许的项目不超过1000个。最大语句长度通常也有限制。

答案 1 :(得分:2)

如上所述,Oracle有一个限制。一种解决方法是执行多个查询,每个查询都包含IN参数的子集。另一种是在子句中使用OR:where column in (:firstsubset) or column in (:secondsubset) or ...某些数据库对SQL字符串总长度也有限制。我从来没有遇到过甲骨文,但不会感到惊讶。

答案 2 :(得分:1)

我认为这取决于您使用的基础数据库。例如,Oracle曾经在IN子句中将你限制为1000个项目,我相信它仍然存在,但我不确定。你的数据库是什么?