]
Gail Badner updated HHH-1425:
-----------------------------
Affects Version/s: 3.5.5
3.6.0.Beta3
I am seeing this behavior in 3.5.5 and 3.6.0.Beta-3.
In trunk, it is because in
org.hibernate.loader.criteria.CriteriaJoinWalker.getJoinType():
<code>
if ( translator.hasProjection() ) {
return -1;
}
</code>
-1 indicates no join.
Setting Projection for Criteria brake previously set Fetch mode.
----------------------------------------------------------------
Key: HHH-1425
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1425
Project: Hibernate Core
Issue Type: Bug
Components: query-criteria
Affects Versions: 3.1.2, 3.5.5, 3.6.0.Beta3
Environment: Java(TM) 2 Runtime Environment, Standard Edition (build
1.5.0_03-b07)
MySQL 4.1.9-standard
Reporter: Ivan Latysh
A criteria query:
Criteria cr = session.createCriteria(ApplicationBean.class);
cr.setFetchMode("categories", FetchMode.JOIN);
cr.add(Expression.sql("category_id=?", "2", Hibernate.STRING));
cr.list();
execute without an error, and produce proper sql and return expected results.
But when I add projection right before list():
Criteria cr = session.createCriteria(ApplicationBean.class);
cr.setFetchMode("categories", FetchMode.JOIN);
cr.add(Expression.sql("category_id=?", "2", Hibernate.STRING));
cr.setProjection(Projections.count("id"));
cr.list();
Query produce an SQL without a join.
This issue has been discovered after upgrade from 3.0.5 to 3.1.2
Mapping:
<hibernate-mapping package="a.b">
<class name="ApplicationBean" table="application">
<id name="id" column="id" type="long">
<generator class="identity"/>
</id>
...
<!-- Application categories -->
<set name="categories" cascade="all-delete-orphan"
lazy="true" table="application_category">
<key column="application_id"/>
<composite-element class="a.b.ApplicationCategory">
<many-to-one name="category" class="a.b.CategoryBean"
column="category_id" cascade="none">
</many-to-one>
</composite-element>
</set>
</class>
</hibernate-mapping>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: