2010-03-22 35 views
1

當我寫了下面的類,我得到以下編譯錯誤:Grails的 - 自引用關係

could not resolve property

我怎樣才能achive如下:

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

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

感謝, 大加讚賞。

+0

只是爲了使其更清楚我不知道如何分配一個員工經理誰inturn也是一個員工。 – WaZ 2010-03-22 14:57:15

回答

5

格羅姆可能會挑剔遵循其命名約定。特別是,字段名稱應該是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: '[email protected]') 
manager.save() 
employee = new Employee(name: 'employee', email: '[email protected]') 
employee.manager = manager 
employee.save() 

編輯: 作爲fabien7474指出,重要的部分是經理(可爲空:真)約束。這樣可以保存員工記錄而無需分配經理。在上例中,名爲manager的員工是employee的經理,但manager本身沒有經理。這由數據庫的管理器列中的NULL值表示。

+0

謝謝你的回覆, 但是,如果我必須編輯一個我分配爲經理的員工,在這種情況下,Grails不會讓我爲經理分配一個空值。這導致管理員必須被分配經理的問題。 我希望你明白我的意思 這隻發生在我編輯管理器時。 – WaZ 2010-03-22 17:11:18

+3

如果您指定約束管理器(空值:true),則不應發生 – fabien7474 2010-03-22 18:45:34

+0

忘記提及, 我的員工域中確實有經理(空值:true)。 當我編輯管理器時,我在管理器的列表框中看不到空的選項。我被迫爲我正在編輯的人分配一位經理。 – WaZ 2010-03-23 09:55:42