Grails 3.2对GORM进行了一些重大更新。如何进行查询:

def c = Cat.createCriteria()
List<Cat> data = c.listDistinct(){
    createAlias('furType', 'ft)
    createAlias('kittens', 'kitten')
    createAlias('kitten.furType', 'kft')
    or {
        ilike('ft.color', 'orange')
        ilike('kft.color', 'orange')
    }
    maxResults 10
    firstResult 10
}

当前,当每只猫有两只小猫时,此查询仅显示5个结果,而不是10个结果。

编辑:编辑后的示例展示了如何调用重复的猫。

最佳答案

试试这个。

def c = Cat.createCriteria()
List<Cat> data = c.listDistinct(max: 10, offset: 10){
    createAlias('kittens', 'kitten')
    createAlias('kitten.furType', 'kft')
    ilike('kft.color', 'orange')
}

更好的方法是,如果要通过创建链接进行分页,则可以按以下格式创建链接
http://example.com/controller/action?offset=10

然后在 Controller 操作中,您可以执行以下操作
params.max = 10
def c = Cat.createCriteria()
List<Cat> data = c.listDistinct(params){
    createAlias('kittens', 'kitten')
    createAlias('kitten.furType', 'kft')
    ilike('kft.color', 'orange')
}

09-28 12:23