[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-4991) ManyToMany table not joined due to max_fetch_depth parameter, results to SQL exceptions
Steve Ebersole (JIRA)
noreply at atlassian.com
Fri Jul 16 15:22:13 EDT 2010
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-4991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Ebersole closed HHH-4991.
-------------------------------
> ManyToMany table not joined due to max_fetch_depth parameter, results to SQL exceptions
> ---------------------------------------------------------------------------------------
>
> Key: HHH-4991
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4991
> Project: Hibernate Core
> Issue Type: Bug
> Components: query-criteria
> Affects Versions: 3.5.0-CR-2
> Environment: Hibernate 3.5.0-CR-2, MacOS X, MySQL 5.1
> Reporter: Sergii Novotarskyi
> Assignee: Gail Badner
> Fix For: 3.5.2, 3.6
>
> Attachments: Example.zip, hhh-4991-testcase.patch, HHH-4991.patch
>
>
> *max_join_depth* parameter prevents Hibernate from joining one end of ManyToMany relationship when using Criteria API, if the relationship is "far" enough from the root entity.
> {quote}
> Criteria c = session.createCriteria(SubEntity.class)
> .createAlias("entity", "e") // ManyToOne, inner join
> .createAlias("e.entity", "ee") // ManyToOne, inner join
> .createAlias("ee.sides", "s") // ManyToMany, inner join + left outer join
> .setProjection(Projections.count("id"))
> .add(Restrictions.ne("s.data", "abc"));
> {quote}
> When *max_join_depth* is set to *2* (default) the above example generates following SQL query
> {quote}
> select count(this_.sub_id) as y0_ from SubEntity this_
> inner join SubMainEntity e1_ on this_.submain_id=e1_.submain_id
> inner join MainEntity ee2_ on e1_.main_id=ee2_.main_id
> inner join MainSide sides7_ on ee2_.main_id=sides7_.main_id
> where s3_.data<>?
> {quote}
> The query, naturally, throws the "Unknown column 's3_.data' in 'where clause'" exception.
> Expected query would be
> {quote}
> select count(this_.sub_id) as y0_ from SubEntity this_
> inner join SubMainEntity e1_ on this_.submain_id=e1_.submain_id
> inner join MainEntity ee2_ on e1_.main_id=ee2_.main_id
> inner join MainSide sides7_ on ee2_.main_id=sides7_.main_id
> left outer join SideEntity s3_ on sides7_.side_id=s3_.side_id
> where s3_.data<>?
> {quote}
--
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