我getHibernateTemplate().find("from test")单表有8万多条数据,程序走不动或提示:
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
....
Caused by:Java.lang.outofMemoryError:java heap space我试着读前100条from test rownum<100是没有问题的,数据越大越慢,请高手帮忙看一下:
List list=getHibernateTemplate().find("from test");
if(list != null)(
for(int i=0;i<list.size();i++){
Test t=(Test)list.get(i);
System.out.println(t.getId());
}
)
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
....
Caused by:Java.lang.outofMemoryError:java heap space我试着读前100条from test rownum<100是没有问题的,数据越大越慢,请高手帮忙看一下:
List list=getHibernateTemplate().find("from test");
if(list != null)(
for(int i=0;i<list.size();i++){
Test t=(Test)list.get(i);
System.out.println(t.getId());
}
)
解决方案 »
- 直接使用SQL操作Access没有问题,使用Access_JDBC30.jar出错!
- eclipse 3.0 Jetty-4.2.19 freemarker error
- <html:submit value="登陆"/> 按钮怎么变灰?
- 在jsp里面,怎么实现window open
- smartUpload如何在Servlet中调用???
- tomcat4.1.27设置的问题(自动启动的话是没问题的),
- servlet读取值为中文的参数时出现乱码的问题
- 高分请教关于session的问题
- 我用jbuilder 7开发的jsp页和servlet,现在我想移植到单独的tomcat4.12中!不能移植!十分奇怪!在线等待!
- 请教一个批处理的问题。。
- 部署项目以后,tomcat启动以后报的错误,大家帮我看看,哪地方出问题了?tomcat6.0
- Google App Engine 是什么东东?有什么用?请好心人回答
我用的是hibernate自带的分页
@SuppressWarnings("unchecked")
public class BaseDao extends HibernateDaoSupport{ public Page findByPage(String hql,Page page){
final int firstResult = (page.getCurrentPage()-1)*page.getPageSize();
final int pageSize = page.getPageSize();
final String newhql = hql;
page.setList((List) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Query q =session.createQuery(newhql);
q.setFirstResult(firstResult);
q.setMaxResults(pageSize);
List cats = q.list();
return cats;
}
}));
page.setTotalSize( findAllCount(hql) );
return page;
}
public int findAllCount(String hql){
return null==getHibernateTemplate().find(hql)?0:getHibernateTemplate().find(hql).size();
}
}
return null==getHibernateTemplate().find(hql)?0:getHibernateTemplate().find(hql).size();
}
在这查询时,find.size是从list中获取大小,在这一步就卡死了。把hql改成select count(*)就OK了