]
Nick Vintila commented on HSEARCH-306:
--------------------------------------
Yes, this is a defect as described by the original description.
The IN clause is generated incorrectly when the PK is composite.
To reproduce create an entity with a PK (String, int) and look it up using Hibernate
Search (for example) - likely this happens if you create a simple IN clause search using
the criteria framework.
To fix flip two lines:
for ( int i=0; i<types.length; i++ ) {
for ( int j=0; j<values.length; j++ ) {
Object subval = values[j]==null ?
becomes
for ( int j=0; j<values.length; j++ ) {
for ( int i=0; i<types.length; i++ ) {
Object subval = values[j]==null ?
Nick
Problem with composite key
--------------------------
Key: HSEARCH-306
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-306
Project: Hibernate Search
Issue Type: Bug
Components: query
Affects Versions: 3.1.0.CR1
Reporter: Mohit Khopkar
Attachments: hibernate jira.zip
When a composite key is used and more than one results are expected , the values passed
to the query are not in a proper expected order.
In the below query the parameters passed are (A00, A00),(A00, 1),(2,5) ....instead of the
correct order which should be (A00,1) ,(A00,2), (A00,5)
(I have omitted the select part)..
..
where ((this_.key_client, this_.key_identifier) in ((?, ?), (?, ?), (?, ?)))
I tried to debug this issue and found that in the class
org.hibernate.criterion.InExpression, the method getTypedValues(Criteria criteria,
CriteriaQuery criteriaQuery) has 2 for loops , one for types and other for values. I get
2 types CustomType and LongType and so for each type it retrieves the value and adds it in
the list in the order A00,A00,A00,1,2,5
I have attached the source code for your reference.
For more information, refer to the below topic on the hibernate forums:
http://forums.hibernate.org/viewtopic.php?t=992121&sid=16e54abb3dbc45...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: