2009-08-09 2 views
0

나는 하루 동안이 일에 매달 렸습니다! Grails/Groovy를 시작하기 시작했습니다.grails에 many-to-one 외래 키가있는 레코드를 삽입하려면 어떻게해야합니까?

간단한 다 대일 외래 키로 두 개의 도메인 클래스가 있습니다. 단순화 조금, 그들은

class Company { 

    String name 
    String city 
    String state 
    String ticker 

    static constraints = { 
     name(unique:true, maxSize:40) 
     state(blank:true, maxSize:2) 
     city(blank:true, maxSize:40) 
     ticker(blank:true, maxSize:8) 
    } 
} 

"회사"이며, 여기에

class Signer { 

    String firstName 
    String lastName 
    String city 
    String state 
    String zip 
    String email 
    Company company 

    static constraints = { 
     firstName(maxSize:40, blank:false) 
     lastName(maxSize:40, blank:false) 
     city(maxSize:40, blank:false) 
     state(maxSize:2, blank:false) 
     zip(maxSize:5, blank:false) 
     email(maxSize:50, unique:true, email:true, blank:false) 
     company(nullable:true) 
    } 
} 

을 (A 회사에 속할 수) 서명자가 문제입니다 :

내가 삽입하는 방법을 알아낼 수 없습니다 "Signer"에 새로운 레코드를 추가하고 company_id의 값을 포함하도록 회사 필드를 가져옵니다.

mysql> select * from signer; 
+----+---------+-----------+------------+----------------------+------------+-----------+-------+-------+ 
| id | version | city  | company_id | email    | first_name | last_name | state | zip | 
+----+---------+-----------+------------+----------------------+------------+-----------+-------+-------+ 
| 1 |  0 | Sunnyvale |  NULL | [email protected] | Robert  | Swirsky | CA | 94087 | 
| 2 |  0 | Sunnyvale |  NULL | [email protected] | Robert  | Swirsky | CA | 11111 | 
| 3 |  0 | Sunnyvale |  NULL | [email protected] | Robert  | Swirsky | CA | 11111 | 

내가 해봤 다음

기존 회사의 기록

기업 세트의 #에 세트를 COMPANY_ID : PARAMS 포함

def s = new Signer(params) 
    s.save() 

기존 회사의 번호는

의 인스턴스를 기록합니다. ID가 유효한 회사의 #입니다 C = Company.get (ID) // 설정

회사 도메인 객체는 params.company는 C

또한

params.company_id = c 

와 함께이 시도 = 이 작품들 중 아무 것도! mysql에서 테이블을 볼 때 company_id 열은 항상 null입니다.

어떻게 작동합니까? 최대 절전 모드는 "너무 똑똑하다"고 시도하고있다! 레코드 번호를 company_id에 밀어 넣고 싶습니다. 해당 회사의 기록이 삭제되면 무엇보다도

static belongsTo = Company 

, 그래서 서명자는 것입니다 :

답변

0

바인드 매개 변수는 company_id 대신 company.id이되어야합니다.

+0

그게 다야! 감사 –

0
당신의 서명자 클래스 시도가 추가로

.

+0

일대일 관계가 아니라 다 대일 관계가 아닌가요? –

관련 문제