[hibernate-issues] [Hibernate-JIRA] Resolved: (HHH-3164) "id in ..." with EmbeddedId and criteria API

Emmanuel Bernard (JIRA) noreply at atlassian.com
Mon Nov 23 13:42:09 EST 2009


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Bernard resolved HHH-3164.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 3.5

Fixed. Thanks

> "id in ..." with EmbeddedId and criteria API
> --------------------------------------------
>
>                 Key: HHH-3164
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3164
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: query-criteria
>    Affects Versions: 3.2.6
>         Environment: hibrenate 3.2.5 hibernate-annotations 3.3.0, database - h2, postgresql, h2
>            Reporter: Bartosz Jablonski
>             Fix For: 3.5
>
>         Attachments: test.zip
>
>
> This issue arised when I was debugging hibernate search, which wasn't retriving entities from query.
> Problem is using query like 'entity.id in ...'  with criteria api and embeddedId.
> Let's say that we have classes:
> @Entity
> public class SomeEntity implements Serializable {
>     @Id
>     private SomeEntityId id;
> (...)
> }
> @Embeddable
> public class SomeEntityId implements Serializable {
>     private Integer id;
>     private Integer version;
> (...)
> }
> In database there are rows:
> (id,version)
> 1,11
> 1,12
> 10,21
> 10,22
> 10,23
> Now I want to retrive rows with id (1,12) and (10,23) using Criteria API:
>         List ids = new ArrayList<SomeEntityId>(2);
>         ids.add( new SomeEntityId(1,12) );
>         ids.add( new SomeEntityId(10,23) );
>         Criteria criteria = session.createCriteria( SomeEntity.class );
>         Disjunction disjunction = Restrictions.disjunction();
>         
>         disjunction.add( Restrictions.in( "id", ids  ) );
>         criteria.add( Restrictions.in( "id", ids  ) );
> hibernate returns no rows, because it constructs query like this:
> select this_.id as id0_0_, this_.version as version0_0_, this_.prop as prop0_0_ from SomeEntity this_ where (this_.id, this_.version) in ((1, 10), (12, 23)) 
> instead of 
> select * from SomeEntity where (id, version) in ((1, 12), (10, 23)) 
> As example I attached maven project which is using h2 database - just run class test.App

-- 
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.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list