日期:2014-05-20  浏览次数:20782 次

hibernate query.createSQLQuery 别名不起作用
Manager代码:
Java code

service.getPageModelForSql("select em.name ,pc.date,dept.name as dname,p.name as pname ,pc.postNum " +
                "from t_postcount pc ,t_post p ,t_employees em ,t_department dept " +
                "where pc.post = p.id and pc.epid = em.id and p.pid = dept.id " +
                "and em.id = "+employeesId+" order by dept.id,pc.date desc ", offset, pageSize);


执行代码:
Java code

Query query = this.getSession().createSQLQuery(sql); //sql就是以上sql语句


查询结果代码:
Java code

List list = query.list();
        for (int i=0;i<query.list().size();i++){
            Object[] o = (Object[]) query.list().get(i); 
            System.out.println((String)o[0]+"==="+(Date)o[1]+"==="+(String)o[2]+"==="+(String)o[3]+"==="+Integer.parseInt(o[4].toString()));
        }



输出结果:
张三===2012-01-15 00:00:00.0===张三===张三===3
张三===2011-11-11 00:00:00.0===张三===张三===8
张三===2011-11-12 00:00:00.0===张三===张三===5

mysql执行结果:
张三 2012-01-15 00:00:00 神外一区 大夜班 3
张三 2011-11-12 00:00:00 神外一区 大夜班 5
张三 2011-11-11 00:00:00 神外一区 大夜班 8

因为要取三个表中都是NAME的字段,所以hibernate执行的结果好像都视同为一个字段。请教各位。

------解决方案--------------------
楼主不是分页查询吗?是不是跟这个有关系呢?