Sunday, May 02, 2010

Groovy many-to-many relationships

Hoje finalmente desvendei um mistério que tava tirando meu sono: como mapear no Grails relações muitos-pra-muitos. Procurei por toda internet e não consegui encontrar uma solução que resolvesse essa questão. Então eis que hoje por acaso encontro no 'The Definite Guide to Grails' (o melhor livro do mundo) como fazê-lo na seção de mapeamento usando banco de dados legados.

É impressionantemente simples, esse é tipo de coisa que você pensa: como não tentei isso antes. É só declarar normalmente o map hasMany dos dois lados e escolher um como owner da relação, por exemplo a relação entre Compositor e Música ficaria assim:

class Compositor {
String nome
static hasMany = [musicas:Musica]
}

class Musica {
String nome
static hasMany = [compositores:Compositor]
static belongsTo = Compositor
}

Deixando o grails fazer o resto pra você (com o atributo scaffold nos respectivos controllers) você tem seu crud com a relação muitos-pra-muitos pronto pra usar. ;)

No comments: