Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Issues List »

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

Anupam M (JIRA)

2010-03-10

Replies: Find Java Web Hosting

Author LoginPost Reply
ManyToMany table not joined due to max_join_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
     Attachments: Example.zip

*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

   
_______________________________________________
hibernate-issues mailing list
hibernate-issues@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-issues
©2008 gg3721.com - Jax Systems, LLC, U.S.A.