Dúvida - Como usar Criteria?
16/07/2012 13:39
0
Bom dia a todos,

Vou listar primeiramente o meu ambiente antes de colocar a minha dúvida.
Tenho 3 Domains criados:


class Aluno {
//Definições dos campos
Integer id
String nome
String status
Integer num_matricula
Date dt_inscricao
}



class Turma {
//Definições dos campos
Integer id
String nome_turma
String situacao
Date dt_inicio
Date dt_fim
String hr_inicio
String hr_fim
}



class TurmaAluno {
//Definições dos campos
Integer id

Turma turma // Sintaxe: DOMAIN Campo
Aluno aluno // Sintaxe: DOMAIN Campo
}


Eu sei que poderia optar por não criar um Domain para a tabela relacional, mas como estou editando as páginas list.gsp das views manualmente, preferi criar um novo domain e posteriormente criar um "Wizard" que irá auxiliar na inclusão dos dados na sua devida ordem.

Pois bem, pretendo colocar na list.gsp da Turma todos os Alunos do domain TurmaAluno que correspondem a sua turma, mas não consegui. A idéia seria essa da página list.gsp da Turma:


<body>
<p>Dados do Doamin Turma</p>
<hr />
<p>Dados do Doamin TurmaAluno</p>
</body>


Já tentei colocar alguns códigos <g:if> ou <g:FindAll> mas não funcionou...

Lí que eu poderia usar uma Criteria, mas eu não entendi onde seria isso, se seria no Domain ou no Controller.... eu queria algo simples para colocar na list.gsp mesmo.

Obrigado pela ajuda!

Até
Danilo Camargo
Tags: Criteria list.gsp Dúvida


0
Danilo, não seria mais fácil de representar seus dados, se você tivesse :


class Aluno{
... // Propriedades

static belongsTo = [turma:Turma]
}

class Turma {
... // Propriedades
static hasMany = [alunos:Aluno]
}

<tags de turma>
<g:if test=${turma.alunos}>
<Tag para listar alunos> </Tag para listar alunos>
</g:if>



que acha ?
16/07/2012 13:58


0
Concordo, inicialmente iria usar esse relacionamento, mas estava me complicando na hora de criar a tela de inclusão de contato, portanto, mudei o formato para um novo domain. (preciso praticar mais as g:tags e alguns recursos avançados).

Bom, pelo que entendi do seu g:if, ele irá procurar todos os alunos que correspondem ao Domain Turma. (por isso o turma veio na frente?)

De qualquer maneira, vou testar a sua forma e caso tenha dúvidas, voltarei aqui, ok?

Muito Obrigado!


0
Oi Danilo, você está falando em incluir alunos que não estão matriculados em nenhuma turma ?

Você pode colocar nas constraints do aluno "turma nullable:true", e depois apenas adicionar as turmas, é claro que para manter este modelo tem que ver como irá fazer com as turmas e tal, mas assim pode ser do jeito que você estava pensando também.

Mas veja, se você colocar TurmaAluno.findAllByTurma(turmaSelecionada) você terá uma lista de TurmaAluno, que contém as referências dos alunos e pode montar o seu gsp da forma que estava esperando também.
16/07/2012 16:18


0
Ou via criteria Create Criteria
16/07/2012 16:20


0
Então, coloquei o seguinte código na tela de list.gsp da Turma, mas não funcionou... (estou me confundindo nos conceitos aqui...)

Segue:

<g:if test="${TurmaAluno.findAllByTurma('turmaInstance?.turma')}">
<li class="fieldcontain">
<p><g:link controller="turma" action="show" id="${turmaInstance?.turma?.id}">
${turmaInstance?.turma?.encodeAsHTML()}
</g:link></p>
</li>
</g:if>


Obrigado.

Obs: Aproveitando, estou usando a versão do grails 2.0.3 e já saiu o 2.1.0. Tem algum problema eu mudar de versão no meio do desenvolvimento? Há algum ajuste a ser feito?


0
Também tentei da seguinte forma:


<g:findAll in="${TurmaAluno}" expr="it.aluno == 'Turma 01'">
<li class="fieldcontain">
<p>${it.aluno}</p>
</li>
</g:findAll>


Obrigado pela ajuda.



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