Update automático
21/10/2012 13:05
0
Bom dia Pessoal,

Estou com a seguinte dúvida: Tenho 2 Domains, um chamado Contato e outro Aluno. Primeiro cadastro os dados do contato e na tela de Aluno, seleciono qual contato será habilitado com aluno.

Pois bem, no g:select do _form da tela de aluno coloquei o código gaia.Contato.findAllByCad_alunoLike(0,[sort:"nome"]) que é uma coluna que armazena somente 0 e 1. Se for 0, o Contato não foi cadastrado ainda como Aluno, sendo que o valor Default já é 0.

Meu problema esta em mudar esse valor para 1 após o cadastro de aluno. Tenho o método afterInsert() no domínio, mas não sei o comando que coloco dentro dele.

Tentei user o HQL mas ví que só funciona com selects, ou melhor, eu só consegui usar os selects.

Dever ser algo bem simples, mas procurei exemplos na internet mas não encontrei.

Obrigado.
Tags: Update afterInsert HQL


0
Então pessoal, consegui rodar o seguinte comando no grails console:

import groovy.sql.Sql
con = Sql.newInstance("jdbc:mysql://localhost/teste", "root", "root", "com.mysql.jdbc.Driver")
con.executeUpdate("Update Contato set cad_aluno = 1 where id = 2")


Até ai blz, mas tentei colocar o mesmo comando no afterUpdate() da classe de domínio, mas não funcionou.

O que posso fazer? Lembrando que estou na classe Aluno e quero rodar o comando acima p atualizar a classe Contato.


0
Danilo, primeira coisa(conselho) dê nomes significativos eu presumo que Cad_Aluno seja o id do Aluno no contrato, então se um contrato "tem um aluno" então porque a propriedade não se chama "aluno" mesmo ? Fica mais fácil entender o seu código ;-)

Segundo, assim, para mim seria ainda uma abordagem mais ou menos, mas você poderia criar um método em aluno, onde recebe um contrato, e seria do tipo, Adiciona(contrato) ou Configura(contrato), onde a sua implementação pode retornar um boolean indicando se foi realmente salvo com sucesso, que acha ?

Muita gente não gosta de fazer o objeto conhecer o outro, mas como ambos já estão relacionados acho que você não precisa de um service para isso bastaria fazer assim :

def salvo = aluno.Configura(contratoDeMatricula) // Não conheço seu domínio não sei se configura é significativo pra você mas eu imaginei este ok ;-)

Espero ter ajudado.
22/10/2012 03:11


0
Ha tá e ele funcionaria assim :

GORM Association

// buscando contratos sem Aluno, na verdade o contrato não tem um aluno(null), pois ele na verdade aponta para um objeto Aluno(ou deveria, isso também depende da sua modelagem, mas fica aí a dica) e não apenas para um id, veja a documentação Grails sobre associações logo acima ;-)

def contratos = Contrato.findAllByAlunoIsNull()

22/10/2012 03:30



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