Grails渴望动态查找器

时间:2013-05-13 17:37:24

标签: grails gorm

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

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

我的理解是书籍列表会被延迟加载,如果我再迭代它们

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

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

1 个答案:

答案 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 }