[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1306) HQL parsing problem with join fetching of arrays/collections of values
Gail Badner (JIRA)
noreply at atlassian.com
Thu May 1 14:34:36 EDT 2008
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_30101 ]
Gail Badner commented on HHH-1306:
----------------------------------
Paul, please open a new Jira issue with a runnable test case (Java + mapping) that reproduces the issue.
> HQL parsing problem with join fetching of arrays/collections of values
> ----------------------------------------------------------------------
>
> Key: HHH-1306
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1306
> Project: Hibernate3
> Issue Type: Bug
> Components: query-hql
> Affects Versions: 3.1
> Environment: SQL Server
> Reporter: Peter Fassev
> Assignee: Steve Ebersole
> Priority: Minor
> Fix For: 3.1.2
>
> Attachments: testcase.zip
>
>
> There is a parsing exception, which is thrown, when executing the following HQL query (note that I only want to fetch an association):
> select o from A as o inner join fetch o.b as e
> The A class looks like:
> public class A {
> private int id;
> private String[] b;
> }
> And the mapping is:
> <class name="A" table="A">
> <cache usage="read-write"/>
> <id type="int" name="id" unsaved-value="0">
> <generator class="native"/>
> </id>
> <array name="b" table="AB" cascade="all">
> <cache usage="read-write"/>
> <key column="aId"/>
> <index column="index_"/>
> <element column="b" type="java.lang.String" length="1024" not-null="true"/>
> </array>
> </class>
> Than following happens:
> java.lang.NullPointerException
> at org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:175)
> at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:637)
> at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:466)
> at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:643)
> at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:279)
> at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:227)
> at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218)
> at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
> at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:105)
> at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:74)
> at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:53)
> at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
> at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:108)
> at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:88)
> at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1540)
> at A.main(A.java:76)
> Exception in thread "main"
> IMPORTANT: Please note, that the previous exception is a secondary exception, which is due to a small bug in the throw clause. The actual (unthrown) exception (taken from the source of SelectClause class) should be read as:
> ...
> throw new QueryException(
> "query specified join fetching, but the owner " +
> "of the fetched association was not present in the select list " +
> "(" + fromElement.getClassName() + " -> " + fromElement.getRealOrigin().getClassName() + ")"
> ....
> But it can not be throwed, because the fromElement is actually NULL, thus the NullPointerException.
> There a simple workaround for this. When the "select" clause (which is actually not needed) is removed from the query, there is no such exception: "from A as o inner join fetch o.b as e" - this query does not produce an exception.
> But as far as I can see from the documentation, the select clause is perfectly legal, so I suppose the problem lies somewhere in the HQL Parser. Also, I am having the same problem with list or sets of components, instead of arrays.
> The problem is not present in Hibernate 3.0.
> Please see the attached Test case.
--
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