关于list 显示值的问题

隔夜的果酱_5566 2011-05-30 05:01:24
我用hibernate 原生态sql 做了一个查询的操作

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

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



这个是service

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中
List list = wageserviceimp.find_ceshi();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}

list当中有四条数据
    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属性了, 像这种我改怎么得到我要的数据,显示到页面上,或者在后台打印出来!
高手指点一下!!!!!!!!!!!!!!!,感激啊,感激。。。
...全文
141 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyc1985414 2011-05-31
  • 打赏
  • 举报
回复
list.get(i).get("username");
休谱诺斯 2011-05-31
  • 打赏
  • 举报
回复
修改一下:应该是${遍历出来的数组名[数组下标]}。。。
休谱诺斯 2011-05-31
  • 打赏
  • 举报
回复
因为你查出来是普通的数组,不是实体对象的集合。原因是你那个里面没有用hql封装成对象,所以页面就直接遍历集合,然后${遍历出来的集合名[数组下标]}即可。。。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zwtlong 的回复:]
在q.list()前面 加上 q.addEntity(entityClass);指定转换类型
[/Quote]

我用过这个了一但加上实体
就报错could not execute query,没有查询,是不是我的sql语句用到了函数的为问题而不能直接转换为对象啊!
lovemichael2 2011-05-31
  • 打赏
  • 举报
回复
可能是你用到了某些函数hibernate不支持
Spring89 2011-05-31
  • 打赏
  • 举报
回复
为什么不用泛型呢?
list.get(i).toString();
这不行吗???
Spring89 2011-05-31
  • 打赏
  • 举报
回复
this.getSession().createSQLQuery(sql)
.addScalar("username",Hibernate.STRING)
.addScalar("group_concat(welfares ,moneys)",Hibernate.STRING)
.addScalar("dept",Hibernate.STRING);
你这样试下,例外:我对你的SQL语句有点怀疑。
在SQL中:使用聚合函数查询的列,必须出现group by语句中,
除使用聚合函数的列外,所以我认为还要group by后加上dept。
你的SQL查询出来的结果可能有误......
UPC_思念 2011-05-30
  • 打赏
  • 举报
回复
list存放的是Object对象,要转化成User对象
在q.list()前面 加上
q.setResultTransformer(Transformers.aliasToBean(User.class));
「已注销」 2011-05-30
  • 打赏
  • 举报
回复
或者重写toString()方法
实践和文字 2011-05-30
  • 打赏
  • 举报
回复
因为SQLQuery 是不知道你查询结果的类型,所以要动态指定将结果集转换成什么类型的,在q.list()前面 加上 q.addEntity(entityClass);指定转换类型
实践和文字 2011-05-30
  • 打赏
  • 举报
回复
在q.list()前面 加上 q.addEntity(entityClass);指定转换类型
「已注销」 2011-05-30
  • 打赏
  • 举报
回复
List对象取出来,可以直接.getXXX();的

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧