3

我是一个 grails 初学者。

我有一个 2domain 类

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 = {
    }
}

地址属于员工的地方..所以我已经给出了 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])
    }
}  

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

4

1 回答 1

5

在这里,您有一个一对一的关系 -address向类添加一个属性Employee

class Employee {
    String name
    String department
    Address address

    public String toString() {
        name
    }
}

改变你belongsToAddress这样的:

class Address {
    String line1
    String line2

    static belongsTo = [employee: Employee]
}

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

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

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

于 2012-06-18T08:21:38.407 回答