2012-05-16 2 views
5

В моем проекте Grails, у меня есть следующие классы:Grails критерии запрос с fetchMode нетерпеливого с двумя уровнями

class A { 
    static hasMany = [cs:C] 
} 

class B { 
    static hasMany = [cs:C] 
} 

class C { 
    static belongsTo = [a:A, b:B] 
} 

Я хотел бы запросить класс А и принести все ассоциации с В и С жадностью. Я пробовал следующий запрос критериев, но когда я перебираю Cs из A, hibernate использует ленивую инициализацию для запроса объектов B.

A.withCriteria() { 
    fetchmode "cs", FetchMode.JOIN 
    fetchMode "cs.b", FetchMode.JOIN 
} 

Любые идеи?

ответ

8

Решено.

A.withCriteria() { 
    cs{ 
     fetchMode "cs.b", FetchMode.JOIN 
    } 
} 

Или

A.withCriteria() { 
    cs{ 
     b{ 
     } 
    } 
} 

В обоих случаях Hibernate использует два запроса. Гораздо лучше, чем у меня было 98 ;-)