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 в столбце менеджера в базе данных.