Grails 3.2 - 选择分页和一对多关联

时间:2016-10-10 19:28:12

标签: grails gorm hibernate-criteria

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个结果。

编辑:编辑示例以显示如何调用重复的Cats。

1 个答案:

答案 0 :(得分:0)

试试这个。

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

然后在您的控制器操作中,您可以执行以下操作

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