一个类别表,和信息表,页面想显示信息的列表,同时把信息的类别名称显示出来,因为存在信息表里的是类别的ID号,但是在写语句的时候老是报错。
hql = "select id,topic,adddate,body,typename From news,newstype where news.typeid = newstype.typeid"
这条语句在数据库中直接执行没有问题,但是程序里面就报错
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode 
 +-[IDENT] IdentNode: 'id' {originalText=id}

解决方案 »

  1.   

    既然是hql 你那上表名还是类名
    From news,newstype 
      

  2.   

    确定是对应的。并且如果不查询类别名称就没问题
    hql = "select id,topic,adddate,body From news" 
      

  3.   

    Hql,我猜,要用Id不是id。和orm类对应。
      

  4.   

    没看你的配置和源码 下次问把问题描述清楚,节约你的时间
    我现在估摸着有 几种可能:1: 配置文件的属性配置不完全 或者某个属性的名字错了2: 缺乏对应的getter setter 而配置文件配置了这些信息
    其他原因一下看不出来
    建议这两种可能都没解决的话 贴下代码 和配置文件内容
      

  5.   

    "select id,topic,adddate,body,typename From news,newstype where news.typeid = newstype.typeid"
    看看你的这句sql
    第一个id是什么意思 ?
    where后面的 news.typeid = newstype.typeid
    你表的id有很多意思的 ?
      

  6.   

    hql = "select ns.id,ns.topic,ns.adddate,ns.body,nst.typename From news ns,newstype nst where ns.typeid = nst.typeid"
    改成这样问题解决
    谢谢大家的回复