关于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");