今天在敲的時(shí)候唐瀑,遇到一個(gè)bug:Property 'cust_name' not found on type java.lang.Long。在項(xiàng)目的jsp頁(yè)面引用了“cust_name”蚕断,說找不到這個(gè)屬性眨攘,開始一直以為是jsp哪里出錯(cuò)了主慰,浪費(fèi)半天時(shí)間也沒找到原因,后來在代碼里面找鲫售,發(fā)現(xiàn)在dao里調(diào)用的find()(查詢所有方法)返回值是一個(gè)數(shù)字共螺,而不是我需要的集合,并且這個(gè)數(shù)字是dao.find()上面一個(gè)方法的返回結(jié)果情竹。想想可能是我方法里調(diào)用的DetachedCriteria的api不夠?qū)傩悦瓴唬瑢?dǎo)致出錯(cuò)了,再網(wǎng)上查資料秦效,返現(xiàn)調(diào)用一次DetachedCriteria的聚合函數(shù)方法后雏蛮,需要把DetachedCriteria清空一下。代碼:dc.setProjection(null);
原dao里的兩個(gè)方法如下:
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;
}