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+什么意思呀
去掉就可以了