1
class Pirate {
    String name
    static belongsTo = Ship
    static hasMany = [ships: Ship]
}

class Ship {
    String name
    static hasMany = [crew: Pirate]
}

new Ship(name: "Ship1").addToCrew(new Pirate(name: "pirate1")).save()

上記のコードはエントリをPirateandShipテーブルに保存するだけで、テーブルには保存しませんship_crew

Burt が Spring Security Grails プラグインで使用しているこの手法は認識していますが、引き続きhasManyandを使用できるようにしたいと考えています。belongsTo

アップデート

上記のコード行はPirate、 、Ship、およびship_crewテーブルの 3 つすべてにエントリを保存しているように見えますが、コンソールからは 2 つのテーブルにのみエントリが保存され、テーブルにはエントリが保存されません。ship_crew

> new Ship(name: "Ship10").addToCrew(new Pirate(name: "pirate10")).save(failOnError:true) 
new Ship(name: "Ship10").addToCrew(new Pirate(name: "pirate10")).save(failOnError:true) 
Hibernate: 
    /* insert playwithgrails.Ship
        */ insert 
        into
            ship
            (version, name) 
        values
            (?, ?)
Hibernate: 
    /* insert playwithgrails.Pirate
        */ insert 
        into
            pirate
            (version, name) 
        values
            (?, ?)
===> playwithgrails.Ship : 29
4

0 に答える 0