Grails 保存嵌套对象

Grails 保存嵌套对象,grails,groovy,Grails,Groovy,我的记录域类如下: Record.groovy Person person Schedule schedule String nameOfRecord def saveRecord (params) { def personInstance = Person.get(params.record.person.id) def scheduleInstance = Schedule.get(params.record.schedule.id) def nameOfTheR

我的
记录
域类如下:

Record.groovy

Person person
Schedule schedule
String nameOfRecord
def saveRecord (params) {
    def personInstance = Person.get(params.record.person.id)
    def scheduleInstance = Schedule.get(params.record.schedule.id)
    def nameOfTheRecord = params.nameOfRecord

    // At this point i want to save my Record. How can i do it
    def rec = new Record(params)

    rec.save(flush: true)

}
我的RecordService.groovy如下所示:

Record.groovy

Person person
Schedule schedule
String nameOfRecord
def saveRecord (params) {
    def personInstance = Person.get(params.record.person.id)
    def scheduleInstance = Schedule.get(params.record.schedule.id)
    def nameOfTheRecord = params.nameOfRecord

    // At this point i want to save my Record. How can i do it
    def rec = new Record(params)

    rec.save(flush: true)

}
人员
计划
未保存在
记录
表中。我怎样才能保存这些

我想问题出在
def rec=new Record(params)
上,我没有保存
scheduleInstance
personInstance
。如何解决这个问题

更新

<g:form controller="record" action="save">
<g:hiddenField name="record.person.id" value="${record.person.id}" />
<g:hiddenField name="record.schedule.id" value="${record.schedule.id}" />

... And other input field

... 和其他输入字段
人员和计划未保存在记录表中。我怎样才能保存这些

我想你是说记录中没有保存个人和日程表的外键?如果是这样的话,下面的方法应该有效

def saveRecord(Record record) {
    rec.save(flush: true)
}

如果这看起来很神奇,您应该阅读,特别是“将请求数据绑定到模型”一节

@Ilep我想你要找的是一种hasOne关系: 它不仅能更好地处理关系,还能更好地处理删除。如果适用,还应定义BelongsTo关系

您的语法也有问题:

def personInstance = Person.get(params.record.person.id)
def scheduleInstance = Schedule.get(params.record.schedule.id)
def nameOfTheRecord = params.nameOfRecord

// At this point i want to save my Record. How can i do it
def rec = new Record(params)
应该是:

def personInstance = Person.get(params.record.person.id)
def scheduleInstance = Schedule.get(params.record.schedule.id)
def nameOfTheRecord = params.nameOfRecord

// At this point i want to save my Record. How can i do it
def rec = new Record(person: personInstance, schedule: scheduleInstance, name: nameOfTheRecord)

实际上,我正在从view类中获取值。我已经更新了我的代码。因此,在这种情况下,我必须检索值
params
属性。因此,在这种情况下,我无法使用
def saveRecord(Record Record){}
@Illep抱歉,我不理解您的评论