这个HQL有什么问题? “无节点的数据类型” [英] What's wrong with this HQL? "No data type for node"

查看:134
本文介绍了这个HQL有什么问题? “无节点的数据类型”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  session.createQuery( 从GoodsSection TGS选择属性 + 
加入gs.ascendants AGS加入ags.attributes属性 +
,其中attribute.outerId =:outerId和TGS =:部分 )
.setString( outerId,pOuterId)
.setEntity( 部分,节)
.setMaxResults(1)
。 uniqueResult();

看起来对我来说很好,但结果是

  java.lang.IllegalStateException:org.hibernate.hql.ast.tree.IdentNode 
\- [IDENT] IdentNode: '属性' 的节点没有任何数据类型{originalText =属性}
$在org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:145)b
$ b。在org.hibernate.hql.ast.HqlSqlWalker.useSelectClause (HqlSqlWalker.java:705)在org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:529)

在org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java :645)在org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281

在org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)

为什么?有什么不对?

解决方案

您还没有定义gs别名。你只有ags和tgs。

session.createQuery("Select attribute from GoodsSection tgs " +
    "join gs.ascendants ags join ags.attributes attribute " +
    "where attribute.outerId = :outerId and tgs = :section ")
.setString("outerId", pOuterId)
.setEntity("section", section)
.setMaxResults(1)
.uniqueResult();

Looks fine to me, but the result is

java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode 
 \-[IDENT] IdentNode: 'attribute' {originalText=attribute}

    at org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:145)
    at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:705)
    at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:529)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:645)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)

Why? What's wrong?

解决方案

You haven't defined the "gs" alias. You only have "ags" and "tgs".

这篇关于这个HQL有什么问题? “无节点的数据类型”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆