[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-5118) Criteria not generating whole SQL (missing select, missing join)

Gail Badner (JIRA) noreply at atlassian.com
Wed Apr 21 20:36:34 EDT 2010


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

Gail Badner commented on HHH-5118:
----------------------------------

This looks like a duplicate of HHH-4991. Can you try increasing max_fetch_depth and see if that works?

> Criteria not generating whole SQL (missing select, missing join)
> ----------------------------------------------------------------
>
>                 Key: HHH-5118
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5118
>             Project: Hibernate Core
>          Issue Type: Bug
>    Affects Versions: 3.5.1
>            Reporter: ChB
>            Priority: Critical
>
> I use the following code:
> class X {
> 	@ManyToMany(mappedBy = "x")
> 	public Set<Y> getY() {
> 		return this.y;
> 	}
> }
> class Y {
> 	@ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
> 	@JoinTable(name = "x_to_y", joinColumns = { @JoinColumn(name = "y") }, inverseJoinColumns = { @JoinColumn(name = "x") })
> 	public Set<X> getX() {
> 		return this.x;
> 	}
> 	@ManyToMany(fetch = FetchType.LAZY)
> 	@JoinTable(name = "y_to_z", joinColumns = { @JoinColumn(name = "y") }, inverseJoinColumns = { @JoinColumn(name = "z") })
> 	@OrderBy("name ASC")
> 	public List<Z> getZ() {
> 		return this.z;
> 	}
> }
> class Z {
> 	@ManyToMany(mappedBy = "z", cascade = CascadeType.ALL)
> 	public Set<Y> getY() {
> 		return this.y;
> 	}
> 	@ManyToMany(fetch = FetchType.LAZY, mappedBy = "broken")
> 	public Set<Broken> getBroken() {
> 		return this.broken;
> 	}
> }
> class Broken {
> 	@ManyToMany(fetch = FetchType.LAZY)
> 	@JoinTable(name = "z_to_broken", joinColumns = { @JoinColumn(name = "broken") }, inverseJoinColumns = { @JoinColumn(name = "z") })
> 	@OrderBy("name ASC")
> 	public List<Z> getZ() {
> 		return this.z;
> 	}
> }
> And perform the following criteria query:
> Criteria criteria = session.createCriteria(X.class);
> Criteria criteriaY = criteria.createCriteria("y");
> Criteria criteriaZ = criteriaY.createCriteria("z");
> Criteria criteriaBroken = criteriaZ.createCriteria("broken");
> criteriaBroken.add(Restrictions.eq("id", 1));
> This results in the following SQL
> select this_.id as id14_4_,
>  this_.* as ...,
>  x_to_y5_.x as x2_14_,
>  y1_.id as y,
>  y1_.id as id3_0_,
>  y1_.* as ...,
>  z9_.y as y1_3_,
>  z2_.id as z2_,
>  z2_.id as id19_3_,
>  z2_.* as ...,
> from y this_
> inner join x_to_y x_to_y5_ on this_.id=x_to_y5_.x
> left outer join y y1_ on x_to_y5_.y=y1_.id
> inner join y_to_z z9_ on y1_.id=z9_.y_id
> left outer join z z2_ on z9_.z=z2_.id
> inner join z_to_broken broken11_ on z2_.id=broken11_.z
> where broken3_.id=1
> There are 2 errors in the SQL which might come down to the same issue:
> 1.) In the select clause right before the 'from y this_' is a ',' which shows that not all columns where put in the select clause.
> 2.) In the where clause a 'broken3_' is used which was never declared before.
> This works fine in Hibernate 3.3.

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