2014-04-01 223 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