2010-11-14 62 views
13


我想加载一个结构,在关联链中深两级。沿线的东西:withCriteria两级深度关联渴望获取grails

class TopLevel { 
    String name 

    LevelOne levelOne 
}  

class LevelOne { 
    String name 

    LevelTwo levelTwo 
} 

class LevelTwo { 
    String name 
} 

我想加载整个结构。搜索我发现这个例子,但它没有奏效。 “println”生成了一个查询到LevelTwo表。

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

println result.levelOne.levelTwo.name 

感谢任何帮助!
- 史蒂夫

回答

21

得到它的工作。这是秘密酱油:

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