2009-08-09 1 views
0

私はこれで1日中立ち往生しました! Grails/Groovyを使い始めたばかりです。多対1の外部キーを持つレコードをgrailsで挿入するにはどうすればよいですか?

私は単純な多対一の外部キーを持つ2つのドメインクラスを持っています。簡素化されたビット、彼らは

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) 
    } 
} 

を(会社に属していてもよい)署名者が問題だ:

私は挿入する方法を見つけ出すことはできません"Signer"に新しいレコードを追加し、company_idの値を格納するcompanyフィールドを取得します。

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 | 

私は次のことを試してみた:

のparamsが含まれてい
def s = new Signer(params) 
    s.save() 

のcompany_idセットを既存の企業レコード

会社セットの#に既存の会社の#は

のインスタンスを記録します

会社のドメインオブジェクトが C = Company.get(ID)によって設定された// 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

多対1の関係ではなく、1対1の関係でのみ行いますか? –

関連する問題