ne je rencontre un bug de mise en veille prolongée ou dois-je une erreur je ne vois pas:Quel est le problème avec cette requête HQL?
select enty.number from EntityAliasName enty
where enty.myId in
(
select cons.myId from Consens cons where cons.number in
(
select ord.number from Orders ord where ord.customer = :customer
and ord.creationDate <
(
select max(ord.creationDate) from Orders ord where ord.customer = :customer
)
)
)
ce que je reçois est la suivante:
org.hibernate.util.StringHelper.root(StringHelper.java:257)
Caused by: java.lang.NullPointerException
at org.hibernate.util.StringHelper.root(StringHelper.java:257)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1391)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:54)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1367)
at org.hibernate.hql.ast.tree.FromElement.getIdentityColumn(FromElement.java:320)
at org.hibernate.hql.ast.tree.IdentNode.resolveAsAlias(IdentNode.java:154)
at org.hibernate.hql.ast.tree.IdentNode.resolve(IdentNode.java:100)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:117)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:113)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:854)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1172)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRefLhs(HqlSqlBaseWalker.java:5167)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1133)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1993)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1932)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1476)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:580)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:288)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:231)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:484)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:394)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341)
utilisant: Mise en veille prolongée 3.3.2.GA/postgresql
Mise à jour:
J'ai essayé d'isoler l'erreur en essayant d'exécuter chaque sous-clause pour la sienne. Je compris que je reçois la même exception en tout exécutant:
select enty.number from EntityAliasName enty
mais si j'exécute ce qui suit il fonctionne:
select number from EntityAliasName enty
maintenant la question, Pourquoi?
peut-être que je devrais mentionner que EntityAliasName
est un alias d'entité définie par:
<class name="package.EntityName"
table="entities"
entity-name="EntityAliasName"
mutable="false"> ... </class>
Mise à jour 2:
Je trouve une solution à la question. Mon POJO a été mis en correspondance ainsi:
<class name="package.EntityName"
table="entities"
entity-name="EntityAliasName"
mutable="false">
<composite-id>
<key-property name="val1" column="val1" type="long"/>
<key-property name="val2" column="val2" type="integer"/>
</composite-id>
<property name="id" column="entity_id" type="string" length="255" not-null="true"/>
...
</class>
il y a un problème en ayant un identifiant composite et en utilisant une propriété nommée id
: HHH-1851 rapporté par Anthony Patricio. Modification du nom de la propriété id
-entityId
résolu le problème:
Merci à mdma pour moi pointant dans la bonne direction.
On dirait qu'il veut 2, mais je ne suis pas un gourou hibernation. – MJB
une erreur survient même sans exécution, lors du déploiement lorsque hibernate analyse des HQL définis statiques à partir de fichiers XML. – ManBugra
Ils sont nommés paramètres, donc je crois que vous en avez seulement besoin, puisqu'ils ont tous les deux le même nom. Mais pour être sûr, vous pouvez supprimer les paramètres de la requête et les valeurs de code dur, juste pour tester. – mdma