免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4605 | 回复: 6
打印 上一主题 下一主题

JSP页面无法显示Hibernate的返回值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-12 13:21 |只看该作者 |倒序浏览
大家好,我希望实现的是统计功能,对各国所举办的会议数量进行计算,sql语句是:
select conferencecountry, count(conferencecountry) as count from meetings.ssh.model.TConference where conferencecountry is not null group by conferencecountry order by count(conferencecountry) desc
这里count是统计所需的新增临时字段。错误现象是:在JSP页面上无法显示统计结果。但是控制台上已经能够打印出两个字段的信息:
美国
30
马来西亚
5
。。。。。。

另外在model里我也加了count字段的定义和映射。只不过表里本身并没有count字段。我不知道是JSP页面标签错误,还是对检索结果集操作的问题。下面把代码贴出来。麻烦大家了!
Action层
  1.    
  2.    1. public String statistic() throws Exception {         
  3.    2.    String orderby = "count(" + queryName + ")";  
  4.    3.    String groupby = queryName;  
  5.    4.    String sortby = "desc";  
  6.    5.    availableItems = tconferenceService.statistic(TConference.class, "id", queryName, groupby, orderby, sortby);  
  7.    6.    return SUCCESS;  
  8.    7.     }  
复制代码
DAO Impl层

  1. public List<T> statistic(Class<T> entityClass, ID id, String fieldname, String groupby, String orderby, String sortby){
  2.         final String entityname = entityClass.getName();
  3.         System.out.println(entityname);
  4.         final String queryName = fieldname;
  5.         final String group = groupby;
  6.         final String order = orderby;
  7.         final String sort = sortby;        

  8. return this.getHibernateTemplate().executeFind(new HibernateCallback() {
  9.   public List doInHibernate(Session session) throws HibernateException, SQLException {
  10.         Object[] obj = null;
  11.         Query query = session.createQuery("select " + queryName + ", count(" + queryName + ") as count from " + entityname + " where " + queryName + " is not null group by " + group + " order by " + order + " " + sort);
  12.                 System.out.println("query=" + query);
  13.                 query.setFirstResult(0);  
  14.                 query.setMaxResults(10);
  15.                 List names = query.list();
  16.                 Iterator iterator = names.iterator();               
  17.                 while(iterator.hasNext()){
  18.                 obj = (Object[])iterator.next();
  19.                 query.list().add(obj);
  20.                 }                 
  21.                 return query.list();
  22.             }
  23.         });
  24.     }

复制代码
JSP层
  1. <s:iterator value="availableItems" status="tConference">
  2.     <tr>
  3.     <td align="center"><s:property value="#tConference.count" /></td>   
  4.     <!-- 显示国家名称 -->
  5.      <td align="center"><s:property value="conferencecountry" /></td>
  6.    
  7.     <!-- 显示举办会议数量 -->
  8.     <td align="center"><s:property value="count" /></td>
  9.     </tr>
  10.     </s:iterator>

复制代码

论坛徽章:
0
2 [报告]
发表于 2010-11-12 13:24 |只看该作者
在action中debug看一下 availableItems list中存的是什么对象?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2010-11-12 13:52 |只看该作者
回复 2# surpass_li


    赞同超人的想法。

论坛徽章:
0
4 [报告]
发表于 2010-11-12 13:56 |只看该作者
回复  surpass_li


    赞同超人的想法。
renxiao2003 发表于 2010-11-12 13:52



    晕

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
5 [报告]
发表于 2010-11-12 14:07 |只看该作者
回复 4# surpass_li


    晕什么呢。别倒就行啊。

论坛徽章:
0
6 [报告]
发表于 2010-11-12 14:13 |只看该作者
打印了一下availableItems的内容,完全正确。

  1. availableItems = tconferenceService.statistic(TConference.class, "id", queryName, groupby, orderby, sortby);
  2.                 Iterator it = availableItems.iterator();
  3.                 while(it.hasNext())
  4.                 {
  5.                         obj = (Object[])it.next();
  6.             System.out.println("country:" + obj[0]);
  7.             System.out.println("count:" + obj[1]);
  8.                 }
复制代码
打印结果为:
country:美国
count:30
country:马来西亚
count:5
country:爱尔兰
count:5
country:阿拉伯联合酋长国
count:3
country:德国
count:3
country:波兰
count:2
country:日本
count:2
country:意大利
count:2
country:葡萄牙
count:1
country:挪威
count:1

论坛徽章:
0
7 [报告]
发表于 2010-11-12 14:24 |只看该作者
conferencecountry是原来表里就有的字段,而count字段是统计产生的新字段。我在两个地方对count进行了配置。

TConference.java

  1. private Integer count;

  2. public TConference(String conferencecoutry,int count) {
  3.             this.conferencecountry = conferencecountry;               
  4.             this.count = count;
  5.         }

  6. public Integer getCount() {
  7.         return count;
  8.         }

  9. public void setCount(Integer count) {
  10.         this.count = count;
复制代码
TConference.hbm.xml


  1.         <property name="count" type="java.lang.Integer">
  2.             <column name="count" />
  3.         </property>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP