Ich habe eine Webanwendung, die eine Suchmaske hat und HQL wird im laufenden Betrieb generiert. Benutzer können auch auf die Spaltenüberschriften klicken, um Artikel nach Bedarf zu sortieren. Einige Spalten erhalten Daten von sehr tief in der Struktur.Hibernate wirft NullPointerException von HqlSqlWalker
Ich habe diese HQL, zum Beispiel, die einwandfrei funktioniert:
SELECT s FROM Application s
LEFT JOIN s.product AS product
LEFT JOIN product.originCountry AS origin
WHERE s.nr = ? ORDER BY origin.name ASC
Aber dies scheitert kläglich:
SELECT s FROM Application s
LEFT JOIN s.product AS product
LEFT JOIN product.producer AS producer
LEFT JOIN producer.address AS address
LEFT JOIN address.country AS country
WHERE s.nr = ? ORDER BY country.name ASC
Kann jemand darauf hin, wohin gehe ich falsch. Wird eine solche tiefe Syntax nicht unterstützt oder so?
Hibernate-Version ist 3.2.1.
Sorry, vergaß die Stacktrace:
2012-04-04 18:59:42,198 ERROR [foo.impl.ServiceImpl] java.lang.NullPointerException
java.lang.NullPointerException
at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:312)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3275)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3067)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at sun.reflect.GeneratedMethodAccessor336.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1192)
at $Proxy90.createQuery(Unknown Source)
.....
können Sie den genauen Stack-Trace und Hibernate Version veröffentlichen? –
Sorry, ich habe es vergessen. Habe jetzt. – Raidok
Könnten Sie die Entitäten veröffentlichen? Sind alle diese Klassen entities (und nicht eingebettete Objekte). Auch 3.2.1 ist sehr alt. Warum wechseln Sie nicht zu einer neueren Version? –