2014-04-01 276 views
0

我是grails的新手,仍然試圖圍繞對象的映射進行包圍。在我們的項目,我們有正在引起一些問題AttendeeVendor三類,並Person出席者有一人與供應商有很多人,所以我們用下面的設置去:Grails映射對象

class Person{ 
    String firstName 
    //Other details... 
} 

class Attendee { 
    Person person 
} 

class Vendor{ 
    static hasMany = [ 
    person:person 
    ] 
} 

所以對象被水合通過網絡表格,我可以確認person細節正在從日誌聲明中吸收。然而,我們得到以下錯誤:

Message ORA-01400: cannot insert NULL into ("EIGHT_STATES_USER"."ATTENDEE"."PERSON_ID")

,所以我們基於我們讀到一個計算器添加static belongsTo = [attendee: Attendee, vendor: Vendor]我們Person。但是當我們試圖保存Attendee時,它想創建一個Vendor

不知道該從哪裏出發。

回答

1

您目前定義它的方式,您需要先保存Person對象,然後將其添加到Attendee並保存。您不需要belongsTo。

class Person { 
    String firstName 
    //Other details... 
} 

class Attendee { 
    Person person 
} 

class Vendor { 
    static hasMany = [ 
    people:Person 
    ] 
} 

def person = new Person(params) 
if (person.save(flush:true)) { 
    def attendee = new Attendee(params) 
    attendee.person = person 
    attendee.save(flush:true) 
} 
+0

感謝能快速的答案是確實工作,但...我們試圖避免以這種方式保存它。裏蘇在她的回答中說了些什麼。 – buzzsawddog