【问题标题】:Eager loading entire association?渴望加载整个协会?
【发布时间】:2011-04-01 18:08:50
【问题描述】:

有没有一种方法可以让我使用 grails list() 域方法预先加载整个对象图?

现在,我指定

MyObject.list(fetch:[assoc1:'eager']),但assoc1 有关联,也必须立即加载。是否有一种简单的解决方案可以快速加载我的整个对象图?

【问题讨论】:

    标签: grails grails-orm eager-loading


    【解决方案1】:

    在 Grails 文档中找到了这个。它并不完全使用 list() 方法,但是,它确实使您不必在域类中指定渴望,因此您可以随意进行渴望获取。我仍然不能 100% 确定这是否会得到你想要的,但这是我能找到的最接近的东西。

    使用 Eager Fetching 进行查询 关于 Eager and Lazy Fetching 我们的部分 讨论了如何以声明方式指定 获取以避免 N+1 SELECT 问题。不过,这也可以 使用条件查询实现:

    def criteria = Task.createCriteria()
    def tasks = criteria.list{
        eq "assignee.id", task.assignee.id
        join 'assignee'
        join 'project'
        order 'priority', 'asc'
    }
    

    【讨论】:

    • 它让我更接近,至少。为提供帮助而 +1 投票,除非有人提出更好的答案,否则您会被接受。
    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    相关资源
    最近更新 更多