代码开发过程中查询量超过三十万的时候,系统方法服务器methodserver会报出如下错误:返回的查询结果已经超过查询限定。
给出指定测试的执行代码,以查询系统中所有的文档版本为例(约有七十万左右):
qs = newQuerySpec(EPMDocument.class);
wt.fc.QueryResultqr =
PersistenceHelper.manager.find(qs);
while (qr.hasMoreElements()) {
++i;
EPMDocument part =(EPMDocument) qr.nextElement();
//执行业务代码
}
错误指定到改行:
wt.fc.QueryResult qr =PersistenceHelper.manager.find(qs);
结果当然执行结果是系统报错。
该错误的解决方式如下:在系统中在db.properties文件中定义了如下属性
wt.pom.queryLimit=300000,直接定义了查询的结果集超过30000就会报错。
当把wt.pom.queryLimit的数值设置成-1时,则代表查询结果不限制数量,但此时需要考虑到服务器的内存情况,当数据量大的时候会直接导致内存爆满,系统宕机。