2014-04-01 3 views
0

나는 grails에 새로운 것이지만 여전히 객체 매핑에 대한 나의 머리를 감싸고있다. 그래서 객체가 수화되고있다Grails 매핑 객체

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

class Attendee { 
    Person person 
} 

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

: 우리의 프로젝트에서 우리는 참석자 한 사람이 있고 공급 업체 그래서 우리는 다음과 같은 설정으로 가서 많은 사람들을 가지고 몇 가지 문제 Attendee, Vendor를 일으키는 세 가지 클래스가 있고, Person 웹 양식을 통해 person 세부 정보가 로그 문구에서 수분이 공급되고 있음을 확인할 수 있습니다. 그러나 우리는 다음과 같은 오류가 발생합니다 :

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

그래서 우리는 우리가 읽은 유래에 따라 우리의 Personstatic belongsTo = [attendee: Attendee, vendor: Vendor]을 추가했다. 그런 다음 Attendee을 저장하려고 시도했을 때 Vendor을 생성하려고했습니다.

여기에서 어디로 가야할지 잘 모르겠습니다.

답변

1

현재 정의한 방식대로 Person 개체를 먼저 저장 한 다음 참석자에 추가하고 저장해야합니다. 사용자는 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

덕분에 실제로 작동 않았다 대답에 빠른 것에 대해 있지만, ... 우리는 그렇게하는 것을 피하려고 노력하고있었습니다. Risu가 그녀의 대답에서 말한 것은 효과가있었습니다. – buzzsawddog