[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-4991) ManyToMany table not joined due to max_fetch_depth parameter, results to SQL exceptions

Shawn Clowater (JIRA) noreply at atlassian.com
Tue Apr 27 17:16:35 EDT 2010


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

Shawn Clowater commented on HHH-4991:
-------------------------------------

Gail, it looks like this addresses the issue however, one test from the hib suite failed (actually it passed but was expected to fail) but other than that it looks like it did the trick.

Now, to figure out why my perf has dropped off the cliff.

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