2012-06-18 2 views
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 and 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]) 
    } 
} 

Как сохранить эту ассоциированную модель?

ответ

5

Здесь вы найдете индивидуальные отношения - добавьте address к классу Employee.

class Employee { 
    String name 
    String department 
    Address address 

    public String toString() { 
     name 
    } 
} 

Измените ваш belongsTo в Address, как это:

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) для получения более подробной информации.

Смежные вопросы