Update involuntário.
24/04/2012 04:06
0
Tenho uma classe que dominio que busco e atualizo com informações de um formulário da minha view. Após realizar a atualização com as informações da view, caso exista alguma informação diferente do que havia no estado persistente, o objeto é atualizado, mesmo que existam validações.

def usuario = Usuario.get(params.id)

pacienteInstance.properties = params

if (!validarUsuario(usuario)){
render(view: "alteracao", model: [usuarioInstance: usuarioInstance])
return

Observem que não realizo o .save(), mais mesmo assim se algum atributo tiver algum valor diferente, por exemplo no banco o nome do usuario era jose, caso eu altere para joão ele atualiza o objeto, mesmo que ocorra alguma validação.

Não estou entendendo este comportamento.

Caso eu utilize o .discard() o problema é resolvido, gostaria de entender porque o objeto é atualizado sem eu utilizar o .save().

Alguém poderia me ajudar?

Tags: update, hibernate


0
As suas validações estão "static constraint" caso sim, deveria dar um save direto que ele ele vai dar um validate() no seu objeto e executar as validações. ;-)
24/04/2012 11:22


0
Weksley,

veja que o GORM usa o Hibernate "por baixo". Dai quando você pega um objeto dele, ele já vem "gerenciado". Quando você altera algum atributo dele e a requisição continua sem erros, o GORM vai lá e diz pro Hibernate fazer o "commit". E como o objeto estava "gerenciado" e sofreu alterações, "por baixo" rola um "update" no registro.


0
Yoshiriro bom dia,

Era isso que tava tentando entender, agradeço a resposta. Então devo realmente usar o .discard(), quando não quiser que essas alterações ocorram.

Obrigado a todos.


0
É... ou então simplesmente instancia o objeto da classe GORM mas sem recuperá-lo via "get()" ou "find()".


0
Entendi Yoshiriro,

Agradeço pelos esclarecimentos, foi modificar a implementação.


0
Então... Na verdade se você pensar do ponto de vista do java puro é o que acontece quando se altera um objeto persistent do Hibernate.

;-)
25/04/2012 02:45



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