私はこれで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
をするので、署名者は以下となります。あなたの署名者クラス試してみ
それだけです!ありがとう –