2010-11-14 7 views
13


Ich möchte gerne eine Struktur, zwei Ebenen tief in einer Assoziationskette laden. Etwas in der Art von:withCriteria zwei Ebenen tiefe Assoziation eifrig holen Grails

class TopLevel { 
    String name 

    LevelOne levelOne 
}  

class LevelOne { 
    String name 

    LevelTwo levelTwo 
} 

class LevelTwo { 
    String name 
} 

Ich möchte die gesamte Struktur laden. In der Umgebung habe ich dieses Beispiel gefunden, aber es hat nicht funktioniert. Die "println" erzeugte eine Anfrage an die LevelTwo Tabelle.

def result = TopLevel.withCriteria { 
    eq('name', 'test') 
    fetchMode "levelOne", FetchMode.JOIN 
    levelOne { 
     fetchMode "levelTwo", FetchMode.JOIN 
    } 
} 

println result.levelOne.levelTwo.name 

Schätzen Sie jede Hilfe!
- Steve

Antwort

21

Habe es funktioniert. Hier ist die geheime Soße:

def result = TopLevel.withCriteria { 
    eq('name', 'test') 
    fetchMode 'levelOne', FetchMode.JOIN 
    fetchMode 'levelOne.levelTwo', FetchMode.JOIN 
    fetchMode 'levelOne.levelTwo.levelThree', FetchMode.JOIN 
} 
Verwandte Themen