
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