今天在敲的時候,遇到一個bug:Property 'cust_name' not found on type java.lang.Long。在項目的jsp頁面引用了“cust_name”,說找不到這個屬性,開始一直以為是jsp哪里出錯了,浪費半天時間也沒找到原因,后來在代碼里面找,發(fā)現(xiàn)在dao里調(diào)用的find()(查詢所有方法)返回值是一個數(shù)字,而不是我需要的集合,并且這個數(shù)字是dao.find()上面一個方法的返回結(jié)果。想想可能是我方法里調(diào)用的DetachedCriteria的api不夠?qū)傩?,?dǎo)致出錯了,再網(wǎng)上查資料,返現(xiàn)調(diào)用一次DetachedCriteria的聚合函數(shù)方法后,需要把DetachedCriteria清空一下。代碼:dc.setProjection(null);
原dao里的兩個方法如下:
public Integer getCustomerNum(DetachedCriteria dc) {
dc.setProjection(Projections.rowCount());//設(shè)置查詢的聚合函數(shù)
List<Long> list = (List<Long>) getHibernateTemplate().findByCriteria(dc);
//清空dc中的聚合函數(shù),不然影響下次調(diào)用dc查詢
dc.setProjection(null);
if(list!=null && list.size()>0){
return list.get(0).intValue();
}else{
return null;
}
}
public List<Customer> getCustomerList(final DetachedCriteria dc,
Integer start, Integer pageSize) {
List<Customer> list = (List<Customer>) getHibernateTemplate().findByCriteria(dc, start, pageSize);
return list;
}