WithCriteria двухуровневая глубокая ассоциация, желающая получить грабли


Я бы хотел загрузить структуру, на два уровня в цепочке связей. Что-то вроде:

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

Оцените любую помощь!
- Стив

Ответы

Ответ 1

Сработало. Здесь секретный соус:

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