3

グレイル初心者です。

私は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])
    }
}  

この関連付けられたモデルを保存する方法は?

4

1 に答える 1

5

ここでは、1 対 1 の関係があります。クラス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
}

詳細については、ドキュメント (1 対 1 の関係)を参照してください。

于 2012-06-18T08:21:38.407 に答える