2016-03-29 19 views
0

私はMySQLデータベースを使用してgrailsを使用しています。私は2つのテーブルを作成し、テーブル間に外部キーを提示するカラムを持っています(私はhasManyを使用しました)。 これは私が一般的に持っているものです。GORM既存のオブジェクトに外部キー値を追加する

class Address { 

    static belongsTo = Person 
    static mapping = { 
    street defaultValue: "'s'" 
    city defaultValue: "'c'" 
} 
} 

class Person { 
    private String firstName 
    private String lastName 

    Set<Address> addresses; 
    static hasMany = [addresses: Address] 

    static mapping = { 
    table 'people' 
    firstName column: 'fn' 
    addresses lazy: false 
    addresses column:'Person_ID',joinTable: false 
    } 
} 

外部キーPERSON_IDがnullであるので、私はすでにデシベルでいくつかのアドレス値を作成しました。 これを更新し、関係をPersonに設定しようとしましたが、成功しませんでした。 何らかの理由で、オブジェクトがdbに保存されると、関係を更新することはできません。方法の

一つは、私はそれを試してみました

Address a1 = new Address(); 
    a1.setCity("Tester1"); 
    a1.setStreet("Tester1"); 

    Person pdb = new Person(firstName: "SupermanB", lastName: "BatmanB"); 
    pdb.save(flush:true); 

    pdb.addToAddresses(a1).save(flush:true); 
    pdb.save(flush:true); 

私はすでにDBに保存されたオブジェクトとの関係を設定することができますどのように、誰もが任意のアイデアを持っていますか?を

おかげで

+0

は、なぜあなたは '2行でaddresses'マッピングを入れたのですか? – injecteer

答えて

0

私はあなたがhasManyjoinTableなしなしバック-REFを持つことができるとは思いません。

最も簡単な解決策は、Addressクラスを少し変更するには、次のようになります。

class Address { 

    static belongsTo = [ person:Person ] 
    ... 
} 
関連する問題