如果我使用动态查找器加载域类列表,例如
List<Book> books = Book.findAllByPublicationYear(2013)
我的理解是书籍列表会被延迟加载,如果我再迭代它们
books.each { println "$it.title" }
我将执行N + 1个查询。有没有办法让动态查找器急切地加载书籍列表(不使用HQL或标准重写查询)?
答案 0 :(得分: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
说(Author
)中有关联,则可以在域类中以编程方式说明您是否要fetch
关联eagerly
或{{ 1}}使用此映射:(默认为懒惰)
lazily
或
static mapping = {
author lazy: false //or authors if you have multiple authors for a Book
}