Grails list() - 处理内存不足和限制列表结果

时间:2014-06-12 11:54:57

标签: grails gorm hibernate-criteria

我在Grails面临以下问题。

这是我的代码,我试图获取所有可能数据的列表并显示它。

def c = Abc.createCriteria()
def results = c.list(){
  eq("A", "a")
  eq("B", "b")    
}

由于结果很大,它继续抓取并死亡。 我想限制列表获取或为其设置最大大小。

我尝试使用maxResults(),但它充当了后期过滤器。

我想放一个

  1. 超时
  2. 限制提取
  3. 如果可能,处理所有数据而不会出现内存不足错误。

2 个答案:

答案 0 :(得分:0)

我不确定“迟到的过滤器”是什么意思,但据我在条件查询中知道以下内容

maxResults(10)

相同
LIMIT 10

在SQL查询中。您可以通过启用SQL日志记录来验证这一点。换句话说,maxResults(X)将限制查询本身返回的记录数。

答案 1 :(得分:0)

您可以使用分页

params.max = Math.min(params.int('max') ?: 10, 100)
def c = Abc.createCriteria()
def results = c.list(params){
    eq("A", "a")
    eq("B", "b")    
}

观点:

<g:paginate controller="myController" action="myAction" total="${results.totalCount}" />