Grails GORM,多层域类的渴望获取模式

时间:2013-03-20 19:17:54

标签: grails gorm grails-2.1

我有以下域名结构:

class Survey {

    Integer id
    String title

    static hasMany = [questions: Question]
    static constraints = {
        id()
        title()
        questions()
    }

    String toString(){
        return title
    }
}

class Question {

    Integer id
    String text

    static hasMany = [responses: Response]
    static fetchMode = [responses: 'eager']

    static constraints = {
        id()
        text()
        responses()
    }

    String toString(){
        return text
    }
}

class Response {

    Integer id
    String text
    Integer numberOfPeopleSelected = 0

    static constraints = {
        id()
        text()
        numberOfPeopleSelected()
    }

    String toString(){
        return text
    }
}

我已修改Bootstrap.groovy以在启动时初始化某些数据,并且对Survey.list()Question.list()Response.list()的单独调用显示每个单独的级别都是使用预期值创建的

然而,当我Survey.list()并深入研究问题时,答案总是为空,如下所示:

enter image description here

我期待通过将fetchMode设置为急切,它应该始终加载该特定对象。

我可以在域对象上更改哪些内容,以确保在执行Survey.findById(1)之类的操作时,它会加载所有问题和响应?

由于

1 个答案:

答案 0 :(得分:0)

请在您的调查课程中定义

static fetchMode = [questions: 'eager']

如果这不起作用,则不推荐使用fetchMode'eager'

您也可以尝试

static mapping = {
 questions fetch :'join'
}

按照此操作了解有关获取策略https://grails.github.io/grails-doc/3.0.x/ref/Database%20Mapping/fetch.html

的更多信息