[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2667) 'illegal attempt to dereference collection' when using auto-join

Jeff Pae-Corr (JIRA) noreply at atlassian.com
Thu Jul 19 22:37:54 EDT 2007


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_27564 ] 

Jeff Pae-Corr commented on HHH-2667:
------------------------------------

I provide support for a web-app that uses Hibernate 3.x. At this time I am not able to provide the version number of Hibernate as those were removed from the jar names, but I get the same behavior. Per the opening description I changed this:

List assignments = find("from Assignment a where a.assigner.locations.name = ?",schoolName);

to

List assignments = find("from Assignment a join a.assigner.locations s where s.name = ?",schoolName);

to attempt to resolve the issue. The problem is that next I am trying to run deleteAll(assignments) but it fails on a java.lang.ClassCastException: [Ljava.lang.Object;

I believe this is probably due to the fact that properties from objects other than Assignment are also being pulled into the List since I am using join. The original query worked fine before the Hibernate update.



> 'illegal attempt to dereference collection' when using auto-join
> ----------------------------------------------------------------
>
>                 Key: HHH-2667
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2667
>             Project: Hibernate3
>          Issue Type: Bug
>    Affects Versions: 3.2.3, 3.2.4, 3.2.4.sp1
>         Environment: I have found that behaviour in version 3.2.4.sp1 and 3.2.3 (I didn't test 3.2.4 pre sp1)
> Database: ORACLE 10g
>            Reporter: Martin Kouba
>
> After upgrading to the latest Hibernate version I got this error.
> I try to use a statement like this
> from cat c where c.mate.id = 13
> the expected resulting SQL should be something like
> SELECT * FROM CAT C WHERE C.MATE_ID = 13
> which is much more performant than making a join
> from cat c join c.mate m where m.id = 13
> which would result in something like that
> SELECT * FROM CAT C INNER JOIN MATE M ON C.MATE_ID = M.ID WHERE M.ID = 13
> This works as expected in 3.1.3, 3.2.0 and 3.2.2
> It doesn't work with version 3.2.3 and with 3.2.4.sp1.

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