Grails - Самореферентные отношения - PullRequest
1 голос
/ 22 марта 2010

Когда я пишу следующий класс, я получаю следующую ошибку компиляции:

не удалось разрешить свойство

Как мне добиться следующего:

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

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

Спасибо, Очень ценится.

1 Ответ

5 голосов
/ 22 марта 2010

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()

Edit: Как отметил fabien7474, важной частью является ограничение менеджера (nullable: true). Это позволяет сохранять записи сотрудников без назначения менеджера. В приведенном выше примере сотрудник с именем manager является менеджером employee, но сам manager не имеет менеджера. Это представлено значением NULL в столбце менеджера в базе данных.

...