]
Steve Ebersole commented on HHH-1123:
-------------------------------------
Not sure what y'all are proposing as the fix here. Splitting the query is not a
viable option. Yes it will work in some cases, but it will not work as a general
solution. And as some have even mentioned on this thread, for some dialect its not just a
restriction on the number of expressions allowed in an in-list; in some databases it is a
restriction for the number of parameters allowed in the query overall. So just splitting
the one-big-in-list into multiple smaller sized in lists OR'ed together is not going
to address that.
I am completely inclined to reject this, tbh...
Cannot put more than 1000 elements in a InExpression
----------------------------------------------------
Key: HHH-1123
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1123
Project: Hibernate Core
Issue Type: Improvement
Components: core
Affects Versions: 3.1 rc2, 3.2.0.alpha1
Environment: Oracle 9i
Reporter: Alexis Seigneurin
Assignee: Strong Liu
Attachments: Animal.hbm.xml, hibernate-inexpression-oracle-3.2.patch,
HQLHelper.java, LongInElementsTest.java, patch.txt
Original Estimate: 1h
Remaining Estimate: 1h
The number of elements that we can put in a "in" expression is limited to a
certain amount (1000 for Oracle, for instance). When creating a criteria query, the
org.hibernate.criterion.InExpression class should split the expression into several
smaller ones.
Attached is a patch which splits the expression by slices of 500 elements. For example,
if we have 1001 elements to put in the "in" expression, the result would be :
(entity.field in (?, ?, ?...) or entity.field in (?, ?, ?...) or entity.field in (?))
The surrounding parantheses are useful to avoid problems with other conditions (a
"and" condition taking over the one of the "or" conditions).
--
This message is automatically generated by JIRA.
For more information on JIRA, see: