【问题标题】:GORM paginateParams usage problemGORM paginateParams 使用问题
【发布时间】:2011-07-15 11:52:41
【问题描述】:

我只是想进行分页,但直到现在我都无法做到。我有 2 个域类和一对多关系。

class User {
   static hasMany = [contacts:Contact]
}

class Contact {
   static belongsTo = [ user : User ]
}

我有 20 个联系人。

当我尝试进行这样的查询时:

def maxResult = 20

def startIndex = 0

def contacts = Contact.findAllByUser(user, [max:maxResult, offset:startIndex])

它不工作。查询正在工作,但使用 gorm 的分页不起作用。结果只有 1 个联系人对象。

当我尝试过时;

def startIndex = 0

def contacts = Contact.findAllByUser(user, [offset:startIndex])

结果是 20 个联系人对象,但是当我尝试使用不同的 startIndex 值时,它也不起作用。对于 startIndex = 5,结果也是 20 个接触对象。

有没有人对此有任何想法。也许我做错了什么,也许是gorm的问题。我还没有找到答案。感谢您的回答。

【问题讨论】:

    标签: grails pagination grails-orm


    【解决方案1】:

    我还没有尝试过 DynamicFinder 来做这件事,但是当我查看文档时,你的语法似乎是正确的。作为替代方案,我使用 createCriteria 来解决分页问题。

    def queryResult = Contact.createCriteria().list(max: max, offset: offset) {
                and {
                    /// FILTER ///
                    user {
                        eq("id", userInstance.id)
                    }
                }
        }
    

    【讨论】:

    • 当我尝试 groovy.lang.MissingMethodException:没有方法签名:静态 com.erimerturk.contact.model.User.call() 适用于参数类型:(com.erimerturk.contact.service .impl.ContactServiceImpl$_getContacts_closure1_closure12_closure13_closure14) 值:[com.erimerturk.contact.service.impl.ContactServiceImpl$_getContacts_closure1_closure12_closure13_c losure14@1fd0cc]|可能的解决方案:save()、wait()、any()、getAll()、save( java.util.Map), 保存(java.lang.Boolean)
    • @erimeturk:错误信息看起来很奇怪。尽管您的模型看起来不错,但这可能意味着域类中有一些不正确的地方。您可以尝试命令“grails clean”,然后重新编译。
    • @erimeturk:我添加了一个“}”来消除代码中的语法错误。
    • @Hoàng Long:我已经添加了,但问题不是我想的那样。我尝试清理并重新编译,但一切都是一样的。这很奇怪,因为当我用 DynamicFinder 尝试它时,过滤器部分正在工作。也不例外。
    • @erimeturk:对不起,你到底在哪里尝试这段代码?我只记得动态查找器和 createCriteria 在单元测试中效果不佳。
    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 2023-03-04
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多