Grails createCriteria重复结果

Grails createCriteria重复结果,grails,criteria,Grails,Criteria,我的标准是给我重复的结果,而不是: def history = TerminHistorie.createCriteria().list([max:20, offset:offset]) 我做到了: def history = TerminHistorie.createCriteria().listDistinct([max:20, offset:offset]) 但我一直在犯错误: java.util.LinkedHashMap cannot be cast to groovy.lan

我的标准是给我重复的结果,而不是:

def history = TerminHistorie.createCriteria().list([max:20, offset:offset]) 
我做到了:

def history = TerminHistorie.createCriteria().listDistinct([max:20, offset:offset]) 
但我一直在犯错误:

java.util.LinkedHashMap cannot be cast to groovy.lang.Closure
如何解决此问题?

请尝试以下方法:

def history = TerminHistorie.createCriteria().listDistinct {
    maxResults(20)
    firstResult(offset)
}
请尝试以下方法:

def history = TerminHistorie.createCriteria().listDistinct {
    maxResults(20)
    firstResult(offset)
}
这起到了作用:

resultTransformer org.hibernate.Criteria.DISTINCT_ROOT_ENTITY
这起到了作用:

resultTransformer org.hibernate.Criteria.DISTINCT_ROOT_ENTITY

listDistinct()方法无法与分页选项maxResult和firstResult配合使用。如果您需要分页的不同结果,我们当前建议您使用HQL。您可以从中找到更多信息。listDistinct()方法与分页选项maxResult和firstResult不兼容。如果您需要分页的不同结果,我们当前建议您使用HQL。您可以从中找到更多信息。这在使用偏移量和限制时确实不起作用,因为它会在查询运行后修剪重复项。这意味着,如果你要求返回10条,并且有两条重复的记录,你将得到8条结果,让你的用户疑惑为什么只有8条而不是10条结果。您的最后一页也将无法工作,因为totalCount是准确的,但结果计数不是准确的。当使用offset和limit时,这确实不起作用,因为它会在查询运行后修剪重复项。这意味着,如果你要求返回10条,并且有两条重复的记录,你将得到8条结果,让你的用户疑惑为什么只有8条而不是10条结果。您的最后一页也将无法工作,因为totalCount准确,但结果计数不准确。