代码是SSH框架,需要运行一个包括有聚合函数count 并进行group by 的sql语句。从Hibernate运行的总数量来看都是正确的,和SQL Sverver 查询分析器里的到的结果一致。但是在jsp页面里无法显示这个count计算的结果,具体代码如下:
ACTIONpublic String GetJustcrawledConfList() throws UnsupportedEncodingException{
    int totalRow = tconferenceService.getRowstemp(TConference.class, "id", ......);
    pager = pagerService.getPager(currentPage, pagerMethod, totalRow);     
    this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
    this.setTotalRows(String.valueOf(totalRow));  
    System.out.println("String.valueOf(totalRow)=="+String.valueOf(totalRow));
    availableItems = tconferenceService.queryItemstemp(TConference.class, "id", ..... pager.getPageSize(), pager.getStartRow());    return SUCCESS;
}public List<T> queryEntityItemstemp(Class<T> entityClass, ID id, ArrayList<String> fieldnameList, ArrayList<String> valueList, int pageSize, int startRow){
final int pageSize1 = pageSize;
final int startRow1 = startRow;
final String entityname = entityClass.getName();
String hql="select a.conferenceid, a.conferencename,count(b.id) as count from meetings.ssh.model.TConference as a,meetings.ssh.model.TConferencedocument as b where a.ifcrawl=1 and a.ifanalysis =0 and b.conferenceid = a.conferenceid group by a.conferenceid,a.conferencename order by count(b.id) desc";
final String hql1 = hql;
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql1);
if (startRow1 >= 0 && pageSize1 >= 0) {
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
}
return query.list();
}
});
}
  <s:iterator value="availableItems" status="meeting">
   <td align="left"><a href="${conferenceurl}" target="_blank"><s:property value="conferencename" /></a>[<s:property value="conferenceid" />]</td>

解决方案 »

  1.   

    <s:iterator value="availableItems" status="meeting">//确保红色的能取到值?
    改为value="%{availableItems}"看下
      

  2.   

    其实是这样,之前我的sql语句没有count函数,没有group by,系统一切运行正常。现在要求加上聚合函数,我加了count,加了group by,在页面上什么都显示不出来了。不知道是前台还是后台的问题
      

  3.   

    下面这句sql不知道在Hibernate如何转化为hql。我也试过query.createSqlquery(sql),还是没有内容显示。不知道如何判断availableItem里是否有值? 只知道availableItem.size() 不等于0,为设置的每页返回数量.请问该怎么往下走?
    availableItemselect a.conferenceid, a.conferencename from meetings.ssh.model.TConference as a,meetings.ssh.model.TConferencedocument as b " +
    " where a.ifcrawl=1 and a.ifanalysis =0 and b.conferenceid = a.conferenceid" +
    " and  a.conferenceid not in (select distinct(conferenceid) from meetings.ssh.model.TPage) " +
    " group by a.conferenceid, a.conferencename,a.conferenceurl,a.crawlstartdate,a.crawlenddate order by a.conferenceid desc";