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()
上記のコードはエントリをPirate
andShip
テーブルに保存するだけで、テーブルには保存しませんship_crew
。
Burt が Spring Security Grails プラグインで使用しているこの手法は認識していますが、引き続きhasMany
andを使用できるようにしたいと考えています。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