【发布时间】:2011-04-01 18:08:50
【问题描述】:
有没有一种方法可以让我使用 grails list() 域方法预先加载整个对象图?
现在,我指定
MyObject.list(fetch:[assoc1:'eager']),但assoc1 有关联,也必须立即加载。是否有一种简单的解决方案可以快速加载我的整个对象图?
【问题讨论】:
标签: grails grails-orm eager-loading
有没有一种方法可以让我使用 grails list() 域方法预先加载整个对象图?
现在,我指定
MyObject.list(fetch:[assoc1:'eager']),但assoc1 有关联,也必须立即加载。是否有一种简单的解决方案可以快速加载我的整个对象图?
【问题讨论】:
标签: grails grails-orm eager-loading
在 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'
}
【讨论】: