hql.append("select a.xms,a.xmjg, a.xms*a.xmjg as xmze from jack a, john b where a.yybh=b.yybh");
这些属性:(xms xmjg yybh)在你的hbm文件中有存在不存在,这里的属性都是和你的hbm相关的。

解决方案 »

  1.   

    这些属性:(xms xmjg yybh)在你的hbm文件都存在得,不过在三个hbm中,我把这三个字段封装到同一个DTO中去掉就可查出来了真是奇怪我在HIBERNATE中用得是BigDecimal型得
      

  2.   

    与你的那个类型没有关系,可能是在select中所出现的字段都要在hbm中定义,都有相关的持久类相对应。
    我查了一下hibernate文档,它对表达式的说明只是说在where中可以使用,没有说在select中可以用,但也没有说不可以用。我想可能是在select中不能用在hbm中不存在的属性,包括计算字段吧。我想你如果只是所回结果集然后显示的话,就不要在这里做了,在返回的list中做是一样的。
      

  3.   

    写成这样就行了,hql.append("select a.xms,a.xmjg, xmze from jack a, john b where a.yybh=b.yybh");
    但我在网上查了资料,hibernate查询支持+,-,*,/得真是奇事;这么符号我迟早要用到得
      

  4.   

    反正select 中用到+,-,*,/就错了;不用就OK了,我把要查得字段先封装在同一个DTO中得这个是没问题得
      

  5.   

    我一定要用HIBERNATE得,这是项目规定得;项目组没人懂,只能在此问了!!
      

  6.   

    select a*b from t 这样的查询Hql不支持.使用原生Sql查询.
      

  7.   

    还有一种我就是写在SQL中视图;然而这样得话hbm.xml映射文件中没有了id或是key;hibernate.cfg.xml配置了后;载入时老是出错;有何解决方法呀!!!