Grails não persiste nova propriedade em superclasse de domínio.
03/07/2014 16:30
Caros,
tenho uma classe de domínio chamada Documento, que possui algumas subclasses. Criei todos os controladores e arquivos gsp através do comando "generate-all" e já fiz diversas customizações em todas as classes e telas.
Após uma reunião, recebi a ordem de acrescentar um novo atributo a todos os documentos - o qual, convenientemente, acrescentei na classe Documento. O novo atributo é um campo obrigatório e o tipo é String.
Decidi acrescentar as referências ao novo atributo manualmente nas telas de formulário (_form.gsp) e exibição (show.gsp), pois não quis executar novamente o comando "generate-all" em todas as subclasses de Documento e ter que customizar os controladores e telas novamente.
No entanto, após compilar e executar o projeto, a propriedade do formulário (que possui nome idêntico ao do novo atributo) não tem o seu valor passado automaticamente a ele - de modo que a instância do documento fica com esse atributo nulo. Se eu alterar os métodos "save" e "update" do controlador de qualquer subclasse de Documento e colocar o valor da propriedade do formulário no atributo novo da instância sendo manipulada, o valor é salvo corretamente.
O que devo fazer para evitar que toda nova propriedade da superclasse precise ser "setada" manualmente nos controladores das subclasses?
Uso Grails 2.1.1 e Groovy 1.8.8 numa JVM 1.7.0_5.
Tags:
Mapeamento de subclasses, gorm