List datas = session.createQuery(selectHql).setFirstResult(offset).setMaxResults(pagesize).list();
上面这句的效果,用hibernateTemplate如何做到

解决方案 »

  1.   

    hibernateTemplate应该是一个Spring框架集成的东西吧
      

  2.   

    对,hibernateTemplate是spring的对hibernate的支持类!!
      

  3.   

    是的,
    java.lang.Object
      org.springframework.orm.hibernate3.HibernateAccessor
          org.springframework.orm.hibernate3.HibernateTemplate这类里有个分页的方法的啊
    List findByCriteria(DetachedCriteria criteria, int firstResult, int maxResults) 
         Execute a query based on the given Hibernate criteria object. 
    API 上都有的 自己看看吧
      

  4.   


    public List find(final String hql, final int pageIndex, final int pageSize) {
    return (List) getHibernateTemplate().execute(new HibernateCallback() {
    public Object doInHibernate(Session session) {
    Query query = session.createQuery(hql);
    int startIndex = (pageIndex - 1) * pageSize;
    query.setFirstResult(startIndex);
    query.setMaxResults(pageSize);
    Object obj = query.list();
    if (obj == null) {
    obj = new ArrayList();
    }
    return (List) obj;
    }
    });
    }
      

  5.   

    你在hibernateTemplate使用其中的callback接口可以拿到session的啊 然后就可以想直接取到session一样写了啊。 public void hibernateUserAdd(){
            getHibernateTemplate().execute(new HibernateCallback() {
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    System.out.println("------------AutoCommit------------"+session.connection().getAutoCommit());
                    session.connection().setAutoCommit(false);
                    // 保存stu1
                    User user1 = new User();
                    user1.setName("ccc");// 在数据库中,name字段不允许为null
                    session.save(user1);
                    return null;
                }
            });    }
      

  6.   

    实际差不多的/**  
         * 查询指定HQL语句的分页数据集合  
         *   
         * @param hql  
         *            HQL语句  
         * @param currentPage  
         *            当前页数号  
         * @param maxRow  
         *            最大记录号  
         * @return 分页数据集合  
         * @throws Exception  
         *             抛出异常  
         */  
        @SuppressWarnings("unchecked")   
        public List<T> findByPage(final String hql, final int currentPage, final int maxRow) { 
         logger.debug("find by page with hql: " + hql + ", currentPage: " + currentPage
         + ", maxRow: " + maxRow);
            try 
            {   
                return getHibernateTemplate().executeFind(new HibernateCallback() 
                {   
                    public Object doInHibernate(Session session) throws HibernateException, SQLException 
                    {   
                        Query query = session.createQuery(hql);   
                        query.setFirstResult((currentPage - 1) * maxRow);   
                        query.setMaxResults(maxRow);   
                        return query.list();   
                    }   
                });   
            } 
            catch (RuntimeException re) 
            {   
                logger.error("find by page failed,HQL: " + hql, re);   
                throw re;   
            }   
        } 
      

  7.   

    SQLQuery query = this.getHibernateTemplate().getSessionFactory()
    .getCurrentSession().createSQLQuery(sql);
    List list = query.setFirstResult((pageNo - 1) * pageSize)
    .setMaxResults(pageSize).list();
      

  8.   

    hibernateTemplate中有一个session
    一样的也可以实现楼主的想法。
    Query q=session.createQuery(hql);
    q.setFirstResult(offset);
    q.setMaxResults(pagesize);
    q.list();可以得到一个list
      

  9.   

    这里有例子,自己看,不过是英文的,我觉得不错,http://apicode.gicp.net/
      

  10.   

    不好用
    public List find(final String hql, final int pageIndex, final int pageSize) 
    这方法的变量还得定义成最终类型
    还是用自己的解决方案好了
      

  11.   

    用hibernate的find方法找出list,然后用list的sublist方法取出子list
    int endset = offset+ pagesize;
    if(endset > orgList.size())
    {
    endset = orgList.size();
    }
    orgList = orgList.subList(offset, endset);