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

时间:2012-06-18 08:07:04

标签: 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 = {
    }
}

其中Address属于Employee ..所以我给了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])
    }
}  

如何保存此关联模型?

1 个答案:

答案 0 :(得分:5)

这里有一对一的关系 - 向address类添加Employee属性。

class Employee {
    String name
    String department
    Address address

    public String toString() {
        name
    }
}

更改belongsTo的{​​{1}},如下所示:

Address

现在你可以像这样创建一个class Address { String line1 String line2 static belongsTo = [employee: Employee] }

Employee

阅读docs (one-to-one relationship)了解更多信息。