Dúvida com hasMany
11/04/2009 00:00
0
Em ruby on rails se eu tiver um relacionamento um para muitos do tipo
cidade e estado, eu posso fazer o seguinte:

estado.cidades.findAllByNome('A%')

e obter as cidades que comecam por A APENAS deste estado.

Alguem pode me dizer se em Grails eu posso fazer o mesmo? Como?
Tags: Grails


0
def bookmark = Bookmark.findByTitleLike('Grails%')



;D
13/04/2009 00:00


0
[quote="Thiago Feitosa"]
def bookmark = Bookmark.findByTitleLike('Grails%')



;D[/quote]

Valeu pela resposta mas meu problema nao eh fazer o like.

O problema eh fazer um find dentro de uma colection de cidades

def cidades_do_estado = estado.cidades.findByNomeLike('A%')

No rails da mas no GRails volta uma mensagem de erro dizendo que o Set cidades nao possui o metodo findByNomeLike por exemplo.
13/04/2009 00:00


0
entendi,

me diz como você fez os dominios de cidade e estado, que fica mais facil de te ajudar.


blz!.
13/04/2009 00:00


0
[quote="Thiago Feitosa"]entendi,

me diz como você fez os dominios de cidade e estado, que fica mais facil de te ajudar.


blz!.[/quote]


class Estado {
String nome
String sigla
static hasMany = [cidades:Cidade]
}
class Cidade {
String nome
Estado estado
}

Sei que posso pegar todas as cidades que comecam com A assim:
def cidadesA = Cidades.findAllByNomeLike('A%')

Posso pegar todas as cidades de 'SP' assim:
def sp = Estado.findBySigla('SP')
def cidades_paulistas = Cidade.findAllByEstadoAndNomeLike(sp, 'A%')

Mas o que eu to querendo saber eh se nao tem como pegar as cidades paulistas assim:

def cidades_paulistas = sp.cidades.findByNomeLike('A%')

Entendeu? Fazendo um find dentro da colection cidades que pertence a estado sp.

Em rails isso pode ser feito. O rails sabe que quando eu faço um find dentro de um campo hasMany de outro objeto, estou na verdade querendo fazer um find na classe a que esse campo pertence só que limitado aos objetos da colection.
Nao sei se me fiz entender...
13/04/2009 00:00


0
Oi,

Você quer no caso chamar o findAll para todos os objetos da coleção ou você quer chamar o findAll apenas para as cidades que estejam dentro de SP?

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


0
Quando eu estava começando a entender o "espirito" do framework eu estava procurando fazer isso também.

Porém, a forma mais correta a se fazer é assim mesmo:


def sp = Estado.findBySigla('SP')
def cidades_paulistas = Cidade.findAllByEstadoAndNomeLike(sp, 'A%')
14/04/2009 00:00


0
Sim,

Mas se quiser, para executar a mesma operação em todos os itens da lista, pode usar o operador *

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


0
[quote="lucastex"]Oi,

Você quer no caso chamar o findAll para todos os objetos da coleção ou você quer chamar o findAll apenas para as cidades que estejam dentro de SP?

[]s,[/quote]

A segunda opção. Mas já entendi que não é possível. Pelo menos não como no Rails. Valeu a todos pela ajuda.
14/04/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