如何在Grails中保存关联对象?

mon*_*nda 3 grails

我是初学者.

我有2个课程

class Employee {
        String name
        String department
    static constraints = {
    }
    public String toString() {
        name
    }
}



class Address {
    String line1
    String line2
    Employee employee

    static belongsTo = Employee

    static constraints = {
    }
}
Run Code Online (Sandbox Code Playgroud)

地址属于员工..所以我给了 belongsTo关联.

我的Employee/create.gsp页面为Employee和Address中指定的字段输入输入.

所以在创建员工时,地址必须自动保存.

那么什么可以是EmployeeController中的保存操作

我尝试过这样的事情,但没有奏效.

def save = {
    def employeeInstance = new Employee(params)
    def addressInstance = new Address(params)
    if (employeeInstance.save(flush: true)) {
        flash.message = "${message(code: 'default.created.message', args: [message(code: 'employee.label', default: 'Employee'), employeeInstance.id])}"
        redirect(action: "show", id: employeeInstance.id)
    }
    else {
        render(view: "create", model: [employeeInstance: employeeInstance])
    }
}  
Run Code Online (Sandbox Code Playgroud)

如何保存这个相关的模型?

aio*_*los 5

在这里你有一对一的关系 - address向Employee类中添加一个属性.

class Employee {
    String name
    String department
    Address address

    public String toString() {
        name
    }
}
Run Code Online (Sandbox Code Playgroud)

改变你belongsTo的Address喜欢这个:

class Address {
    String line1
    String line2

    static belongsTo = [employee: Employee]
}
Run Code Online (Sandbox Code Playgroud)

现在你可以创建一个Employee这样的:

def employeeInstance = new Employee(params)
employeeInstance.address = new Address(params)
if (employeeInstance.save(flush: true)) {
    // your logic
}
Run Code Online (Sandbox Code Playgroud)

阅读文档(一对一关系)以获取更多信息.