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