Relação one-to-many criando tabela extra
03/03/2009 00:00
0
Pessoal, eu tenho uma tabela de cidades e outra de estados. Dentro da cidade eu preciso que apareça o código do estado (e exiba o nome). A estrutura ficaria assim:

estados:
id
nome

cidades:
id
estado_id
nome


Porém o grails cria uma tabela estados_cidades (que eu não considero necessária). Tentei hasMany e belongsTo (respectivamente para estado e cidade) porém não resolve. Tentei utilizar apenas um ou outro e também não consegui. Tentei utilizar o static mapping porém acredito não ter entendido direito a forma de utilizar pois também não funcionou como esperado (possivelmente por um erro meu)

Alguém tem um exemplo ? <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->

Obrigado.
Tags: Grails


0
Para corrigir esse &quot;problema&quot; vc deve fazer assim suas classes Domain:

A classe estado fica sim:

Class Estado
&#123;
String nome
&#125;


A classe cidade fica assim:


Class Cidade
&#123;
String nome
Estado estado

static belongsTo = Estado
&#125;


Para esse problema não acontecer vc deve criar explicitamente um atributo Estado na sua classe Cidade, pois assim não será criada a tabela estados_cidades.

Abraços,
04/03/2009 00:00


0
Show ronny, valew.

Utlima pergunta:

Em teoria, isso fara com que na minha página apareça um campo de combo dentro da cidade que permita seleciona o estado pelo nome. Supondo que o estado passe a ter um campo para a sigla. Como eu faria para que na página aparecesse o nome e a UF concateandos ?

[]'s
04/03/2009 00:00


0
Oi,

[quote=&quot;Khaoz&quot;]Show ronny, valew.

Utlima pergunta:

Em teoria, isso fara com que na minha página apareça um campo de combo dentro da cidade que permita seleciona o estado pelo nome. Supondo que o estado passe a ter um campo para a sigla. Como eu faria para que na página aparecesse o nome e a UF concateandos ?

[]'s[/quote]

Neste caso, a combo usa o método toString() do objeto, para fazer isso você poderia sobrescrever o método, fazendo da seguinte maneira:

class Estado &#123;
String uf
String nome

String toString() &#123;
&quot;$&#123;uf&#125; - $&#123;nome&#125;&quot;
&#125;
&#125;


E para testar se quiser, um scriptzinho em groovy

def estado = new Estado(uf&#58;&quot;SP&quot;, nome&#58;&quot;Sao Paulo&quot;)
println estado


Isso irá renderizar no output (e por consequencia na combo quando usado) &quot;SP - Sao Paulo&quot;.

[]s,
04/03/2009 00:00


0
Putz... nem tinha pensado no velho toString <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->

Obrigado mais uma vez.
04/03/2009 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto