[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-817?page=co...
]
Justin Forder commented on HHH-817:
-----------------------------------
I ran into this today, using Java DB. I tested interactively against Java DB and MySQL to
confirm that aliases didn't work in the WHERE clause, then found the MySQL
documentation explaining that the SQL standard does not permit the use of aliases here.
http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
I found this discussed in various threads on the Hibernate User forum.
Initially I worked around the problem using an SQL restriction, but then I found the
advice here:
http://stackoverflow.com/questions/84644/hibernate-query-by-example-and-p...
that using "this.property" works. It does, indeed, work for me, but leaves the
worry that this (undocumented, so far as I know) behaviour may change in future.
I've added a comment to this forum thread:
https://forum.hibernate.org/viewtopic.php?f=1&t=988049&p=2421106#...
-- Justin Forder
Aggregate projection aliases should not be applied to where-clause
------------------------------------------------------------------
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
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
Priority: Minor
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira