Grails:findAllWhere sort / max / offset运算符不起作用

时间:2014-10-17 13:19:46

标签: grails dynamic-finders

我知道grails中的dyanmic finders只支持2个参数 例如

artifacts = Artifact.findAllByDocumentAndArtifactType(document,artifactType,[max:limit, offset:startIndex]);

因此,为了使用3个以上的参数,我发现了这个example并且它有效。但是我需要使用max和offset运算符。

artifacts = Artifact.findAllWhere(document:document,artifactType:artifactType,status:null,[max:limit, offset:startIndex]);

然而,这会返回整个列表而不是要求的限制。运算符是否适用于findAllwhere?如何使用它或限制我的发现在一定范围内?

2 个答案:

答案 0 :(得分:1)

您可以使用具有两个以上参数的动态查找器。你应该试试这个动态查找器:

Artifact.findAllByDocumentAndArtifactTypeAndStatusIsNull(document, artifactType, [max:limit,offset:startIndex]) 

希望有所帮助

答案 1 :(得分:1)

我发现了一个更优雅的解决方案,并不需要输入超级单片长动态助手。

您可以将findAll与闭包一起使用,如下所示:

artifacts = Artifact.findAll([max:limit, offset:startIndex]) {
      document == document
      artifactType == artifactType
      status == null
}