Hibernate-Java分页-内存不足异常

Hibernate-Java分页-内存不足异常,java,hibernate,Java,Hibernate,我使用下面的代码从DB中获取结果,因为结果集非常庞大 这是正确的做法吗? 我正在运行内存不足异常,我怀疑这就是原因 // div is set to 10,000 // i have calculated how many times i need do it using a count query // and that value is being used in iteration variable Query bigQ=session.createSQLQuery(bigQuery);

我使用下面的代码从DB中获取结果,因为结果集非常庞大

这是正确的做法吗? 我正在运行内存不足异常,我怀疑这就是原因

// div is set to 10,000
// i have calculated how many times i need do it using a count query
// and that value is being used in iteration variable

Query bigQ=session.createSQLQuery(bigQuery);

for(int i=0;i<iteration;i++)    
{
    bigQ.setFetchSize(div);                         
    bigQ.setMaxResults(i*div);

    List<Object[]> result=bigQ.list();

    // now i am using the result to get the values 
    for(Object[] a:result)
    {
        // rest of operations
    }
}   
//div设置为10000
//我已经使用计数查询计算了我需要做多少次
//这个值正在迭代变量中使用
Query bigQ=session.createSQLQuery(bigQuery);

对于(int i=0;i使用偏移和限制…

您的代码看起来很奇怪-分页结果的正确方法是:

bigQ.setFirstResult(i * div);
bigQ.setMaxResults(div);

另外,如果查询只返回标量值(而不是实体),请确保会话缓存不会增长这应该不是问题,但如果您在
//其余操作中加载一些实体,它可以。

感谢您的回复。。如何确保会话缓存不会增长?再次感谢您给出清除会话缓存的提示。使用session.execit()后,我能够从内存不足错误中恢复