gpt4 book ai didi

grails - GORM - 将子项添加到父项并保存给出 groovy.lang.MissingMethodException

转载 作者:行者123 更新时间:2023-12-03 01:29:09 25 4
gpt4 key购买 nike

这是我的领域模型,一项调查有很多问题,每个问题都有很多答复:

class Survey {

String name
String customerName
static hasMany = [questions: SurveyQuestion]

static constraints = {
}
}

class SurveyQuestion {

String question

static hasMany = [responses : SurveyQuestionResponse]
static belongsTo = [survey: Survey]

static constraints = {
}
}

class SurveyQuestionResponse {

String description
static belongsTo = [question: SurveyQuestion]

static constraints = {
}
}

在我的 Controller 中,我有一个方法,它接受调查的 ID,查找它,然后从另一个请求参数构建问题,尝试将问题添加到调查并保存它:

def addQuestion =
{
def question = new SurveyQuestion(question:params.question)
def theSurvey = Survey.get(params.id)

theSurvey.addToQuestions(question) //fails on this line
theSurvey.save(flush:true)

redirect(action: showSurvey, params:[id:theSurvey.id])
}

但是,它失败并返回:

No signature of method: roosearch.Survey.addToQuestions() is applicable for argument types: (roosearch.SurveyQuestion) values: [roosearch.SurveyQuestion : null] Possible solutions: addToQuestions(java.lang.Object), getQuestions()

我不太明白我在这里做错了什么,我尝试了各种替代方法来创建问题,甚至使用文字字符串手动实例化一个问题,但它总是给出相同的错误。

谁能给我建议吗?

谢谢

最佳答案

问题是您没有保存“问题”,因此它尚未存在于数据库中。尝试先保存“问题”,然后将其添加到调查中。像这样的事情:

def addQuestion =
{
def question = new SurveyQuestion(question:params.question).save()
def theSurvey = Survey.get(params.id)

theSurvey.addToQuestions(question)
theSurvey.save(flush:true)

redirect(action: showSurvey, params:[id:theSurvey.id])
}

关于grails - GORM - 将子项添加到父项并保存给出 groovy.lang.MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11711123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com