Grails - 自引用关系

时间:2010-03-22 14:37:46

标签: grails gorm

当我编写以下类时,我收到以下编译错误:

  

无法解析属性

我怎样才能实现以下目标:

class Employee{
  String Name
  String Email
  Employee Manager
  static hasMany = [desginations:Designation]    

  static constraints = {
  Name(unique:true)
  Email(unique:true)
  }

谢谢, 非常感谢。

1 个答案:

答案 0 :(得分:5)

GORM可以根据其命名惯例挑剔。特别是,字段名称应为camelCase,以小写字母开头。

具有以下定义:

class Employee {
    String name
    String email
    Employee manager

    static constraints = {
        name(unique:true)
        email(unique:true)
        manager(nullable:true)
    }
}

我可以像这样的经理创建一名员工:

manager = new Employee(name: 'manager', email: 'manager@example.com')
manager.save()
employee = new Employee(name: 'employee', email: 'employee@example.com')
employee.manager = manager
employee.save()

编辑: 正如fabien7474所指出的,重要的部分是经理(可空:真实)约束。这样可以在不指定经理的情况下保存员工记录。在上面的示例中,名为manager的员工是employee的经理,但manager本身没有经理。这由数据库中管理器列中的NULL值表示。