hibernate里取list的问题

public List searchWorklog(final String where){
List list = getHibernateTemplate().executeFind(new HibernateCallback(){

public Object doInHibernate(Session session) throws HibernateException,SQLException {

Query query = session.createQuery("from worklog "+where+" order by id desc");

List list = query.list();

System.out.println(list.size());
return list;

}

});

return list;

}

这时取到的list.size()的数量是0,而
public List searchWorklogCount( String where){
return this.getHibernateTemplate().find("from worklog "+where+" order by id desc");
}
取到的是正确的数量。
因为要用到分页,所以必须用第一种形式的,求教中......

把你的where语句贴出来,你上面的代码是对的,唯一可能出问题的地方就是where了。

where是当什么用啊,("from worklog "+where+" order by id desc“)
hql语句不对,

2种都是对的呢 你把getHibernateTemplate().execute(hibernateCallback,exposeNativeSession) 后面加个参数true,转化为本地的session设为true 然后其实这2种情况一样不幸你看下面源码

this.getHibernateTemplate().find("from worklog "+where+" order by id desc");
这个底层的代码就是第一种方式 我看了源码

public List find(final String queryString, final Object values[])
        throws DataAccessException {
    return (List) execute(new HibernateCallback() {

        public Object doInHibernate(Session session)
                throws HibernateException {
            Query queryObject = session.createQuery(queryString);
            prepareQuery(queryObject);
            if (values != null) {
                for (int i = 0; i < values.length; i++)
                    queryObject.setParameter(i, values[i]);

            }
            return queryObject.list();
        }

    }, true);
}

Query query = session.createQuery("from worklog "+where+" order by id desc");

+where+什么意思呀

去掉就可以了