[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-817) Projection aliases should not be applied to where-clause (Milosz Tylenda)

Michal Jastak (JIRA) noreply at atlassian.com
Tue Aug 31 12:46:20 EDT 2010


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=38238#action_38238 ] 

Michal Jastak commented on HHH-817:
-----------------------------------

Is there anyone who tracks the longest open issue for hibernate? does this issue win with its 5 years 27 days since the reporting? 
I'm really sorry that it took so much time to fix it, sorry in behalf of all developers who have to use some tricks and workarounds for all those years.
Sorry in behalf of Milosz, who has provided patch for this issue more than 3 years ago (!) ...
... and I'm extremely thankful to Gail, who was the one and only brave enough to solve it finally :) 

Gail, thanks!

> Projection aliases should not be applied to where-clause (Milosz Tylenda)
> -------------------------------------------------------------------------
>
>                 Key: HHH-817
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-817
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.0.5, 3.5.5, 3.6.0.Beta3
>         Environment: Oracle 9.2.0.6, Hibernate 3.0.5, Spring Framework 1.2.2 based application working on Jakarta Tomcat 5.0.28
>            Reporter: Michal Jastak
>            Assignee: Gail Badner
>             Fix For: 3.6.0.Beta4
>
>         Attachments: HHH-817.patch, HHH-817_3.3.2GA_17882.patch
>
>
> following java code:
> protected Entity loadEntityLightweight(Serializable entityId) throws DataAccessException {
>     Criteria criteria = getSession().createCriteria(Entity.class);    
>     ProjectionList projectionList = Projections.projectionList();
>     projectionList.add(Property.forName(BaseEntity.PROP_ID), BaseEntity.PROP_ID);
>     projectionList.add(Property.forName(BaseEntity.PROP_TYPE), BaseEntity.PROP_TYPE);
>     criteria.setProjection(projectionList);
>     criteria.add(Restrictions.eq(BaseEntity.PROP_ID, entityId));
>     criteria.setResultTransformer(new AliasToBeanResultTransformer(Entity.class));
>     return (Entity) criteria.uniqueResult();
>   }
> generates following SQL query:
> select this_.id as y0_, this_.type as y1_ from entities this_ left outer join facilities this_1_ on this_.id=this_1_.id left outer join users this_2_ on this_.id=this_2_.id left outer join addresses address2_ on this_.address_id=address2_.id left outer join entities entity3_ on this_2_.employer_id=entity3_.id left outer join facilities entity3_1_ on entity3_.id=entity3_1_.id left outer join users entity3_2_ on entity3_.id=entity3_2_.id where y0_=?
> y0_ = ? expression in where clause is causing a 904 error on Oracle 9:
> ORA-00904: "Y0_": invalid identifier
> hibernate dialect: org.hibernate.dialect.Oracle9Dialect
> mapping for Entity class:
> <?xml version="1.0"?>
> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
>                                    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
> <hibernate-mapping default-lazy="false" default-cascade="save-update">
>  
>   <class name="Entity" table="entities" mutable="true">
>     <id name="id" type="java.lang.Long" unsaved-value="null">
>       <generator class="sequence">
>         <param name="sequence">entities_id_seq</param>
>       </generator>
>     </id>
>     <many-to-one  name="address"   class="Address" column="address_id" />
>     ...
>     <!--
>       -  Facilities
>       -->
>     <joined-subclass name="Facility" table="facilities">
>       <key column="id" />
>       ...
>       <set name="users" inverse="true" lazy="true">
>         <key column="facility_id" />
>         <one-to-many class="User" />
>       </set>
>     </joined-subclass>
>     <!--
>       -  Users
>       -->
>     <joined-subclass name="User" table="users" dynamic-insert="true" dynamic-update="true">
>       <key column="id" />
>       <many-to-one name="employer"   class="Entity"  column="employer_id" cascade="none" />
>       ...
>       <set name="userAuthorities" inverse="true" cascade="all-delete-orphan">
>         <key          column="user_id" />
>         <one-to-many  class="Authority" />
>       </set>
>     </joined-subclass>
>   </class>
> </hibernate-mapping>

-- 
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