withCriteria two level deep association eager fetch grails

两盒软妹~` 提交于 2019-12-03 11:42:38

问题



I'd like to eager load a structure, two levels deep in an association chain. Something along the lines of:

class TopLevel {
    String name

    LevelOne levelOne
}    

class LevelOne {
    String name

    LevelTwo levelTwo
}

class LevelTwo {
    String name
}

I'd like to load the entire structure. Searching around I found this example, but it didn't work. The "println" generated a query to the LevelTwo table.

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

println result.levelOne.levelTwo.name

Appreciate any help!
- Steve


回答1:


Got it working. Here's the secret sauce:

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


来源:https://stackoverflow.com/questions/4176121/withcriteria-two-level-deep-association-eager-fetch-grails

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!