2010-11-14 13 views
13


Mi piacerebbe caricare una struttura, due livelli in profondità in una catena di associazioni. Qualcosa sulla falsariga di:withCriteria deep level association eager fetch grails

class TopLevel { 
    String name 

    LevelOne levelOne 
}  

class LevelOne { 
    String name 

    LevelTwo levelTwo 
} 

class LevelTwo { 
    String name 
} 

Mi piacerebbe caricare l'intera struttura. Cercando in giro ho trovato questo esempio, ma non ha funzionato. Il "println" ha generato una query sulla tabella LevelTwo.

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

println result.levelOne.levelTwo.name 

Apprezzare qualsiasi aiuto!
- Steve

risposta

21

Funzionante. Ecco la salsa segreta:

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