2012-06-18 20 views
3

我是一個Grails初學者。如何在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屬於員工..所以我給belongsTo關聯。

我的Employee/create.gsp頁面爲員工和地址中指定的字段提供輸入。

等員工的創建,地址必須自動保存。

所以這可能是在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]) 
    } 
} 

如何保存這種關聯的模型?

回答

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 
} 

閱讀docs (one-to-one relationship)進一步的信息。

相關問題