4

我有以下域结构:

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()并深入研究问题时,响应始终为空,如下所示:

在此处输入图像描述

我期望通过将fetchMode设置为渴望它应该始终加载该特定对象。

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

谢谢

4

1 回答 1

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

于 2015-10-27T10:01:30.530 回答