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