0

如果我使用动态查找器加载域类列表,例如

List<Book> books = Book.findAllByPublicationYear(2013)

我的理解是书籍列表将被延迟加载,这样如果我然后迭代它们

books.each { println "$it.title" }

我将执行 N + 1 个查询。有没有办法让动态查找器急切地加载书籍列表(不使用 HQL 或条件重写查询)?

4

1 回答 1

4

动态查找器总是急切地获取域的(非关联)成员。例如,如果您publicationYear是其中的一员,Book您将始终运行一个查询来获取所有与plublicationYear. 我的查询看起来像

select this_.id as id0_0_, this_.version as version0_0_, 
this_.name as name0_0_,this_.publication_year as publicat4_0_0_ 
from book this_ 
where this_.publication_year=?

Book如果您在say ( )中有关联,Author您可以在域类中以编程方式说明您是否想要fetch关联eagerlylazily使用此映射:(默认为惰性)

static mapping = {
        author lazy: false //or authors if you have multiple authors for a Book
    }

或者

static fetchMode = [author: 'eager']

于 2013-05-13T18:13:44.690 回答