日期:2014-05-17  浏览次数:20793 次

关于list 显示值的问题
我用hibernate 原生态sql 做了一个查询的操作

这个是原生态sql语句,用hql的时候不能用函数
Java code

    public List find_ceshi(String sql) {
        System.out.println("**"+sql);
        SQLQuery  q =  this.getSession().createSQLQuery(sql);
        return q.list();
    }




这个是service 

Java code
public List find_ceshi() {
        String sql ="select username,group_concat( welfares ,moneys),dept  from salary_fl where month='2011-04' group  by username";
        List list = wagesdao.find_ceshi(sql);
        return list;
    }




在action中
Java code
List list = wageserviceimp.find_ceshi();
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }

list当中有四条数据
SQL code
    select
        username,
        group_concat( welfares ,
        moneys),
        dept  
    from
        salary_fl 
    where
        month='2011-04' 
    group  by
        username
[Ljava.lang.Object;@b4c69
[Ljava.lang.Object;@1c5ab93
[Ljava.lang.Object;@837311
[Ljava.lang.Object;@1f78541


现在我不明白的地方就是,list中没有对象,我怎么才能得到我查询的那些数据,以前用list<user> u 
就可以直接用u。get属性了, 像这种我改怎么得到我要的数据,显示到页面上,或者在后台打印出来!
高手指点一下!!!!!!!!!!!!!!!,感激啊,感激。。。

------解决方案--------------------
List对象取出来,可以直接.getXXX();的
------解决方案--------------------
在q.list()前面 加上 q.addEntity(entityClass);指定转换类型
------解决方案--------------------
因为SQLQuery 是不知道你查询结果的类型,所以要动态指定将结果集转换成什么类型的,在q.list()前面 加上 q.addEntity(entityClass);指定转换类型
------解决方案--------------------
或者重写toString()方法
------解决方案--------------------
list存放的是Object对象,要转化成User对象
在q.list()前面 加上 
q.setResultTransformer(Transformers.aliasToBean(User.class));

------解决方案--------------------
因为你查出来是普通的数组,不是实体对象的集合。原因是你那个里面没有用hql封装成对象,所以页面就直接遍历集合,然后${遍历出来的集合名[数组下标]}即可。。。
------解决方案--------------------
修改一下:应该是${遍历出来的数组名[数组下标]}。。。
------解决方案--------------------
list.get(i).get("username");