我有以下域名结构:
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)
之类的操作时,它会加载所有问题和响应?
由于
答案 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
的更多信息