假设有如下sql代码
select * from tb_brand as a inner join (select spid,sum(sl) as sl,sum(je) as je from tb_sell where  xsdate between '2003-01-01' and 2009-01-01' group by spid ) as b on a.id=b.spid order by je desc
在用Connection中执行没问题.
我想在Hibernate中利用session.createQuery这个方法来执行这条sql语句时候出现了问题,提示错误是 没有设置方言
可是我在配置文件中已经设置好了,其他的方法执行也好使,唯独这个不行,我又写了一个测试的语句
select * from tb_brand 这个用session.createQuery方法就可以顺利执行.
找了一些资料session.createQuery这个方法的参数必须是原生的sql语句,起初我以为我的sql编写有问题,但是我在查询分析器中测试了,一切正常,就是不知道为什么出错,请高手指教一下,谢谢

解决方案 »

  1.   

    估计是你的HQL有问题,那你就使用SQL查询试试,session.createSqlQuery,后面是你的sql语句。
      

  2.   

    我用的就是sql查询啊,上述的sql语句没有用hql,只是用了session.createSqlQuery这个方法,但是出错
      

  3.   

    用createSQLQuery,
    方言在hibernate.cfg.xml里设置            String sql = "select * from tb_brand as a inner join (select spid,sum(sl) as sl,sum(je) as je from tb_sell where  xsdate between '2003-01-01' and 2009-01-01' group by spid ) as b on a.id=b.spid order by je desc ";
                SQLQuery sqlQuery = session.createSQLQuery(sql);
                List list = sqlQuery.list();
      

  4.   

    可能是我没说明白,我已经设置了方言了,调用createSQLQuery提示我没有设置方言.
    我别的Hibernate方法都好使~~