Grails - [1:N]关系问题

时间:2017-08-30 21:12:33

标签: mysql sql-server grails

我有2个不同的域类,一个用于Employee,另一个用于Departments。它们之间的关系是[1:N],这意味着许多员工可以在一个部门工作,但反之亦然。问题是,在Grails在项目运行时从域类创建表后,对于一个员工,该表的部门ID引​​用了Department Table上的id。例如,对于名为“Peter”的用户,部门ID为1.

部门表还包含部门的名称以及部门ID。

如何引用employee表中的department_id指向department.name而不是department.id?

部门域类:

class Department {
    String name

    static hasMany = [
            employees: Employee
    ]

    static constraints = {
    }

    static mapping = {
        version false
    }

    def String toString() {
        name
    }


}

员工域类:

class Employee {
    String firstName
    String lastName
    String email
    String country
    int born

    static belongsTo = [department: Department]

    static constraints = {
        firstName(blank: false)
        lastName(blank: false)
        born(blank: false)
        email(blank: false, email: true)
        country(blank: false)
    }

    static mapping = {
        version false
    }
}

我需要的是,在Employee表中,要在department.name而不是department.id引用的department_id列。

1 个答案:

答案 0 :(得分:1)

我猜你需要配置Department表的主键是'name'而不是默认的'id'列。然后Grails将使用该名称作为外键。

即:

class Department {
...
    static mapping = {
        id name: 'name'
    }
...
}

ref(Grails 3.1):http://docs.grails.org/3.1.x/ref/Database%20Mapping/id.html