Hibernate 转换含按规定字段相除后排列及含limit的SQL语句问题,它的dao如何写?

Hibernate 上如何实现这句sql语句:"SELECT * FROM food WHERE isdel = '0' ORDER BY (totalgrade/reviewsnum) DESC LIMIT 5;"

主要想问:它的Dao层应该如何写?

给你个例子

 public List<Idcard> queryByName(int idcardCode) throws Exception {
        List<Idcard> list = new ArrayList<Idcard>();
        list = null;
        try {
            session = sessionFactory.getCurrentSession();
            String hql = "from Idcard idcard where idcard.idcardCode=?";
            Query q = session.createQuery(hql);
            q.setParameter(0, idcardCode);
            list = q.list();
        } catch (Exception e) {
            System.out.print("数据查询失败!");
            e.printStackTrace();
        }

        return list;
    }

没有limit啊?主要是limit不会!你这个我还不如DAO类直接继承HibernateDaoSupport。然后

String hql = "select count(*) from Food f where isdel = ? and f.categorySecond.category.cid = ? ";
List list = this.getHibernateTemplate().find(hql, 0, cid);
if(list != null && list.size() > 0){
return list.get(0).intValue();
}
return 0;

 public List<User> find(int page, String asc) throws Exception {

        List<User> list = null;
        try {
            session = sessionFactory.getCurrentSession();
            String hql = "from User u order by u.userid " + asc;
            Query q = session.createQuery(hql);
            q.setFirstResult((page - 1) * User.PAGE_SIZE);
            q.setMaxResults(User.PAGE_SIZE);
            list = q.list();
        } catch (Exception e) {
            System.out.print("分页查询失败!");
            e.printStackTrace();
        } 
        return list;
    }