日期:2014-05-20 浏览次数:20935 次
/** * <li>QBC查询</li> * * @author 旦旦而学 * @param c:查询的类 * @param obj:查询的对象 * @param orber:按那几个字段排序 * @param row:每页显示多少行 * @param pages:当前显示第几页,从1开始 * @exception HibernateException * @return List */ public <T> List<T> find(Class<T> c, T obj, String[] orders, int row, int pages) throws HibernateException { Criteria criteria = this.getSession().createCriteria(c); if (obj != null) { Example example = Example.create(obj); example.enableLike(MatchMode.ANYWHERE);// 匹配模式,使用模糊查询必填项。 example.excludeNone();// 空的不做查询条件 example.excludeZeroes();// 0不要查询 example.ignoreCase(); // 不区分大小写 criteria.add(example); } if (row > 0 && pages > 0) { criteria.setMaxResults(row);// 最大显示记录数 criteria.setFirstResult((pages - 1) * row);// 从第几条开始 } // 判断是否有排序请求,如果有加入到排序方法中 if (orders != null) { for (int i = 0; i < orders.length; i++) criteria.addOrder(Order.desc(orders[i])); } return criteria.list(); }
------解决方案--------------------
sql= "from Reply r where r.topic.id="+topic.getId();
------解决方案--------------------
session.createQuery(sql).setFirstResult(begin).setMaxResults(max).list();
在这个查询之上要根据topic中的chaxun条件重新拼接sql,如:
sql+“ WHERE NAME=”+topic.getName
然后将拼接的sql放到Query里面去