[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