忘れがちなので備忘録として
1 2 3 4 5 6 |
class DomainA implements GormEntity<DomainA> { static belongsTo = DomainB static hasMany = [domainBs : DomainB] } |
と
1 2 3 4 |
class DomainB implements GormEntity<Child> { static hasMany = [domainAs : DomainA] |
の二つがあって、Many to Many の関係にある。
この時、保存は以下の順序で行う。
DomainAのList(domainAList) と、DomainB(domainB)がある場合、
DomainB に、DomainA を全て入れてから、DomainBを保存する
1 2 3 4 5 6 |
for(DomainA domainA : domainAList) { domainB.addToDomainAs(domainA) } domainB.save(flush:true) |
更新は、DomainAのListと、DomainBがある場合
DomainAのListのコピーを作成しておき、(domainAListCopy) 、以下のように行う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
domainAListCopy.each { it.removeDomainBs(domainB) it.save() } domainB.domainAs.clear() for(DomainA domainA : domainAlist) { domainA.addToDomainBs(domainB) domainA.save(flush:true) } domainB.save(flush:true) |