Listagem de Dados com GORM
28/07/2013 14:30
0
Bom dia pessoal será que alguem aqui me da um help?

entapo to fazendo um trabalho de faculdade e pela velocidade de desenvolvimento resolvemos utilizar grails, eu ja tenho alguma experiencia em ruby on rails e algumas vidoaulas de grails hehe

entao me preciso fazer uma listagem e tenho um codigo como o seguinte:

Class Semestre {
//atributos
static belongsTo = [aluno : Aluno]

}

Class Aluno {
//atributos
static hasMany = [semestres: Semestre]

}


Bem quando adciono um semestre escolho a qual aluno ele pertence, se tenho Aluno1 e ALuno2, o Semestre.list() me imprime todos os semestres de ambos os alunos, eu preciso imprimir apenas os semestres pertencentes a um aluno, sei que é simples, quero saber se o grails ja me traz algum finder dinamico para isso ou eu terei que criar uma criteria?

Atencsioamente
Tags: criteria gorm finders list


0
Olha não sei se entendi você, mas acredito que o que você esta querendo é:

def aluno = Aluno.get(1)
aluno.semestres.each{
println it
}


1
dá pra usar o Semestre.findAllByAluno(aluno) também
30/07/2013 15:15


0
Se você só tiver o "id" do aluno e quiser evitar várias consultas, pode fazer com "where clause":

Semestre.where{aluno.id==idAlunoDaRequisicao}.list() // ou .find() ao final se só quiser 1 registro


Abraços.


0
Entao muito obrigado pessoal deu pra entender um pouco melhor ja, usei o :

Semestre.findAllByAluno(aluno)

Sugestao do Mussato, mas todas foram uteis vlws mesmo


0
@Yoshi a Domain.where{} se encaixaria na necessidade dele? Pois eu a vejo como um utensilio para subqueries (compostas) ao invés de realizar a busca, uma vez que ele pode fazer a busca da seguinte forma:


Domain.findByIdAluno(value);


Where é menos verboso até concordo, mas não seria uma ferramenta específica para determinados casos sendo utilizada como "quebra galho" em outros, mesmo existindo algo "feito" para satisfazer esta necessidade de busca?

*Esta não é a minha visão final sobre o assunto, com argumentação posso mudar sem grandes problemas.


0
Olá, Carlos Eduardo.

O "Where" que recomendei seria mais eficiente caso ele recebesse somente o 'id' do aluno da requisição.

Ora, eu tenho somente o "id" vindo de um formulário ou cliente Rest, com "findAll" seria:

Semestre.findAllByAluno(Aluno.get(params.idAluno))

ou
def aluno = Aluno.get(params.idAluno)
Semestre.findAllByAluno(aluno)


Em ambos os casos o GORM faria 2 consultas ao banco e não apenas 1 como no caso do "where".

Lógico que se ele já tem sempre um objeto do tipo "Aluno" em mãos, o "findAll" fica melhor mesmo.


0
Ah, e uma outra vantagem do "where": caso precise mudar o nome do atributo, as IDEs GGTS e IntellijIdea refatoram o conteúdo da closure do where. Os "dynamic finders" não.



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