나는 하루 동안이 일에 매달 렸습니다! 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
, 그래서 서명자는 것입니다 :
그게 다야! 감사 –