Em Busca do Grails - static transients = ["campoCalculado"]
05/03/2012 22:51
0
Pessoal,

Tenho lido bastante a respeito de Grails/Groovy... e a cada dia gosto mais!

Comprei um livro do Fernando Anselmo ("Em busca do Grails") e é bem legal. Infelizemente ele foi escrito na versão 1.2.1... quer dizer.. infelizmente eu só conheci o Grails quando estava na versão 2RC...

mass.. sem delongas... tem uma parte que me confundiu um pouco, já que em todos os outros artigos/exemplos/videos que eu tive contato não tinha aparecido... o "static transients" na classe de modelo.

Nos últimos capítulos, a didática do autor é desenvolver pequenos projetos e ir detalhando passo a passo o que está fazendo.. e looogo no primeiro, tem o projeto mais que tradicional de uma livraria.

Classe autor:

class Autor {
String nome
Date nascimento
Integer totLivros // ***

static transients = ["totLivros"] //***
static hasMany = [livros:Livro]

static constraints = {...}

Integer getTotLivros() {
def autor = Autor.findByNome(nome)
def livro = Livro.findAll(from Livro as livro where livro.autor = ?"[autor]
return livro.size()
}

private void setTotLivros(Integer i) {}

String toString() {nome}

}


Entendi que esse campo será calculado, e que não ficará salvo em tabelas.

Minha dúvida é:
Está "correto" colocar esse campo calculado dentro da minha classe de modelo e ter que sobrescrever os métodos get/setters? não deveria ser em um controlador?


Reparei, e o próprio autor comenta posteriormente, que tem que eliminar uma série de linhas das views que são geradas pelo scaffolding por causa desse campo calculado...


Acho que é isso!

Obrigado!!
Tags: static transients, campo calculado, model, em busca do grails


0
Oi Rafael,

no caso do setter, como não é usado, eu acho bobagem, principalmente porque você definiu o campo como transiente e o cálculo é feito apenas pelo getter.

A idéia do transient é você informar ao Hibernate que aquele campo deve ser ignorado nas tarefas de persistência/busca.


0
Opa Rafael, beleza ???

Também comecei no GRails por esse livro.

O Anselmo usou o recurso assim, só pra exemplo mesmo de que pode ser feito. Pense em Transients (como o Kico já explicou) como atributos do domínio que não devem ser persistidos.

O que ele fala sobre o scaffolding é porque ao gerar as telas o campo totLivros aparece como um campo de tela para input... Lembre, o cálculo do total é para ser transparente ao usuário e não para ser inputado em uma trela de Sistema.

Abs []
06/03/2012 14:34


0
Adriano e Henrique, Obrigado!
06/03/2012 20:38


0
Reabrindo o topico,

Estou estudando grails a uns dois dias, e estou com um problema em relação ao static transient.
Quando eu coloco um campo como transient ele não aparece no meu formulario gerado.
Alguma ideia??


abs.


0
Comportamento interessante este Herbert. Qual versão do Grails você está usando?


0
opa Kico então estou utilizando o grails 2.2.0, inclusive estou seguindo uma video aula sua que está no devmedia, coloco um atributo hashsenha e um senha... onde o senha é transient soh que quando gero não aparece no formulario o campo senha


0
Opa galera, resolvi o problema.
Eu não consegui colocar o campo usando o scaffold, coloquei na unha mesmo.

Valew galera.


0
Como você fez pra resolver???? estou com o mesmo problema X_X
28/04/2015 19:50



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