解决方案 »

  1.   

    package crm.dao;import java.sql.SQLException;
    import java.util.List;import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class QueryDAO extends HibernateDaoSupport{
    public List queryByPage(
    final String hql,
    final Integer currentPage,
    final Integer pageSize,
    final Object ...objects){

    //回调
    return getHibernateTemplate().executeFind(
    //匿名类 实现接口
    new HibernateCallback(){
    public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    Query query=session.createQuery(hql);
    if(currentPage!=null && pageSize!=null){
    query.setFirstResult((currentPage-1) * pageSize);
    query.setMaxResults(pageSize);
    }

    if(objects!=null){
    for (int i = 0; i < objects.length; i++) {
    query.setParameter(i, objects[i]);
    }
    }
    return query.list();
    }

    });
    }
    public List queryByHQL(String hql,Object...objects){
    return queryByPage(hql,null,null,objects);
    } public Object queryByUnique(String hql,Object...objects){
    List list= queryByHQL(hql,objects);
    return list!=null && list.size()>0?list.get(0):null;
    }
    }
      

  2.   

    以前写的, queryByUnique是查询唯一值
      

  3.   

    第一:hql能刚好解决你现在困惑的问题第二:sql的你自己改一下不就行了? 还真希望别人代码什么都改好给你?
      

  4.   

    hibernate分页方法:
    public List findBySql(String sql, int firstResult, int maxResults) {
    SQLCallBackUtil cbfunc = new SQLCallBackUtil(sql, firstResult, maxResults); return getHibernateTemplate().executeFind(cbfunc);
    }