Have `Restrictions.in()` throw an exception when given an empty collection
--------------------------------------------------------------------------
Key: HHH-6065
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-6065
Project: Hibernate Core
Issue Type: Improvement
Components: core
Affects Versions: 3.6.1
Reporter: JK
Priority: Minor
I often witnessed SQL errors due to empty collections being passed to `Restrictions.in()`.
I strongly suggest to have it throw an `IllegalArgumentException` when given an empty
collection to catch what I see as a programming error as early as possible (in the realm
of Hibernate). I don't pass arrays to the method overload, but that argumentation and
approach might apply to it as well.
Interlude: I assume that `WHERE someColumn IN ()` is illegal in all SQL dialects, though
that's just an assumption of mine.
Also, I want to address a possible alternative suggestion upfront: Replacing above illegal
SQL with something legal (e.g. `1 = 2`, thus evaluating to false) might hide application
errors and cause a lot of headache.
IMHO, the way to go is to throw an exception. If a developer wants to drop the `IN` clause
from the query/have it evaluate to false if the collection is empty, that should be done
explicitly by adding the criteria restriction inside an `if` clause.
P.S.: This might apply to both `null` being passed as well as Hibernate's non-criteria
APIs.
What's your opinion? And did I miss something?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira