hibernate根据条件查询的问题
本帖最后由 mutou269874721 于 2010-10-15 17:43:54 编辑 项目用的是SSH框架。。现在做到一个根据两个条件查询数据库的问题。不知道数据库语句该怎么写了。
请大家指教一下。。
public List<Restaurant> getListSerach(String add, String rType,
int pageSize, int pageNo) {
Session session=super.getSession();
String hql="from Restaurant res where res.foodAddress like %?% and res.foodType like %?% order by newid()";
Query query=session.createQuery(hql);
query.setString(0, add);
query.setString(1, rType);
List<Restaurant> list=query.list();
return list;
}
public int getTotalSerach(String add, String rType) {
Session session=super.getSession();
String hql="select count(res.id) from Restaurant res where res.foodAddress like %"+'?'+"% and res.foodType like %"+'?'+"% ";
Query query=session.createQuery(hql);
query.setString(0, rType);
Long record=(Long) query.uniqueResult();
return record.intValue();
}
public ActionForward getListSerach(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
int pageSize=8;
int pageNo=Integer.parseInt(request.getParameter("reqPage"));
String add=new String(request.getParameter("add").getBytes("ISO-8859-1"),"UTF-8");
String rType=new String(request.getParameter("rType").getBytes("ISO-8859-1"),"UTF-8");
List<Restaurant> list=resBiz.getListSerach(add, rType, pageSize, pageNo);
int record=resBiz.getTotalSerach(add, rType);
request.setAttribute("add", add);
request.setAttribute("rType", rType);
request.setAttribute("list", list);
request.setAttribute("currentPage", pageNo);
request.setAttribute("pageSize", pageSize);
request.setAttribute("maxPage", record % pageSize == 0 ?
record/ pageSize : (record / pageSize + 1));
return mapping.findForward("viewResList");
}
Hibernate: select count(restaurant0_.id) as col_0_0_ from yule.dbo.restaurant restaurant0_ where (restaurant0_.foodAddress like ?) and (restaurant0_.foodType like ?)
list:0
record:0
都是0,这是为什么呢??
我用了你的语句,代码是这样的:
public List<Restaurant> getListSerach(String add, String rType,
int pageSize, int pageNo) {
Session session=super.getSession();
String hql="from Restaurant res where res.foodAddress like ? and res.foodType like ? order by newid()";
Query query=session.createQuery(hql);
query.setString(0, "%"+add+"%");
query.setString(1, "%"+rType+"%");
List<Restaurant> list=query.list();
return list;
}
public int getTotalSerach(String add, String rType) {
Session session=super.getSession();
String hql="select count(res.id) from Restaurant res where res.foodAddress like ? and res.foodType like ? ";
Query query=session.createQuery(hql);
query.setString(0, "%"+add+"%");
query.setString(1, "%"+rType+"%");
Long record=(Long) query.uniqueResult();
return record.intValue();
}