Duvida, GORM belongsTo
Postado em 07/09/2009 00:00
0
0
Qual a diferença no código abaixo:


class Airport {
static hasMany = [routers:Route]
}

class Route {
Airport airport
}

//ou

class Route {
static belongsTo = [airport:Airport]
}

Tags: Grails
dsnogueira
Pontos: 0






0
0
07/09/2009 00:00
[quote="dsnogueira"]Qual a diferença no código abaixo:


class Airport {
static hasMany = [routers:Route]
}

class Route {
Airport airport
}

//ou

class Route {
static belongsTo = [airport:Airport]
}

[/quote]

No banco de dados, o resultado é o mesmo, no entanto, nas classes de domínio há algumas diferenças:

quando você escreve o atributo belongsTo, está deixando implícito que a sua classe de domínio esta em uma relação um para n no banco de dados. Além disto, também cria um novo atributo na sua classe de domínio (no exemplo que você passou, se chama airport).

Já quando você coloca a instrução hasMany, você também estará explicitando o relacionamento um para n, no entanto, o atributo que será criado (no seu exemplo, routers) será uma Collection armazenando os itens filhos da sua classe.

Agora, continuando: vamos nos aprofundar um pouco mais no seu código ok?


class Route {
Airport airport
}

//ou

class Route {
static belongsTo = [airport:Airport]
}


Na prática, a diferença será pouca ou nenhuma. No entanto, podem haver variações de um SGBD para outro, pois a geração de código por parte do Hibernate varia de SGBD para SGBD.

Henrique Lobo Weissmann (Kico)
Pontos: 1485



0
0
08/09/2009 00:00
Entendi, percebi também que quando tenho duas relações um pra n numa unica classe de dominio, eu tenho que usar as duas formas e ainda o mappedBy.



class Airport {
mappedBy = [routers:'airport', aircraft:'airport']
static hasMany = [routers:Route, aircraft:Aircraft]
}

class Route {
Airport airport
belongsTo = [airport:Airport]
}

class Aircraft{
Airport airport
belongsTo = [airport:Airport]
}



Esta certa dessa forma? Eu tive que fazer isso pra resolver um problema meu, mais não sei se é a forma correta

dsnogueira
Pontos: 0



0
0
08/09/2009 00:00
O mapped by neste caso é desnecessário (pelo menos eu nunca precisei colocar esta instrução ao fazer algo semelhante ao que você está fazendo)

Henrique Lobo Weissmann (Kico)
Pontos: 1485



 


Esqueceu sua senha?
 
Grails Brasil é mantido por itexto Desenvolvimento de Projetos Ltda.
Em caso de problemas, sinta-se livre para procurar Henrique Lobo Weissmann (Kico) por e-mail: kicolobo@itexto.net
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão (clique no logo à direita para maiores detalhes)