GORM não encontra objeto salvo [muito estranho]
06/07/2009 00:00
0
Olá

Acontece de vez em quando algo muito estranho quando eu salvo um objeto. Por padrão quando é salvo um objeto na action save, ele passa como parametro o id do objeto salvo e redireciona para a action show e na action show é buscado o objeto salvo através do id vindo do parametro. O problema que está acontecendo é que as vezes ele não consegue pegar o objeto e acaba sendo redirecionado para a action list com uma mensagem do tipo "Permissao not found with id 12", mas o objeto esta ali.. salvo. Eu fiz o teste e o parametro é passado corretamente, mas na hora de dar um Permissao.get(params.id) é retornado null, mas ele foi salvo.

E isto aconteceu com várias classes de domínio e não é sempre que acontece, geralmente acontece nas primeiras vezes que salvo após iniciar o servidor, não sei se isso tem a ver, e em quase todas elas o código das controller é o mesmo gerado pelo Grails.

Estou usando a versão 1.1.1, oq será que pode ser, alguém já passou por isto?

Segue um exemplo

O certo: depois de salvar, o controller me leva para a view show


O errado: depois de salvar, não é encontrado o objeto salvo, e o controller me leva para a tela list, dizendo que o objeto não foi encontrado, mas ele está bem ali em baixo na listagem!!
Tags: Grails


0
[quote="fpdella"]Olá

Acontece de vez em quando algo muito estranho quando eu salvo um objeto. Por padrão quando é salvo um objeto na action save, ele passa como parametro o id do objeto salvo e redireciona para a action show e na action show é buscado o objeto salvo através do id vindo do parametro. O problema que está acontecendo é que as vezes ele não consegue pegar o objeto e acaba sendo redirecionado para a action list com uma mensagem do tipo "Permissao not found with id 12", mas o objeto esta ali.. salvo. Eu fiz o teste e o parametro é passado corretamente, mas na hora de dar um Permissao.get(params.id) é retornado null, mas ele foi salvo.

E isto aconteceu com várias classes de domínio e não é sempre que acontece, geralmente acontece nas primeiras vezes que salvo após iniciar o servidor, não sei se isso tem a ver, e em quase todas elas o código das controller é o mesmo gerado pelo Grails.

Estou usando a versão 1.1.1, oq será que pode ser, alguém já passou por isto?

Segue um exemplo

O certo: depois de salvar, o controller me leva para a view show


O errado: depois de salvar, não é encontrado o objeto salvo, e o controller me leva para a tela list, dizendo que o objeto não foi encontrado, mas ele está bem ali em baixo na listagem!!
[/quote]

Você verificou se existe algum trigger no seu banco de dados?
Verificou também se há algum log de saída após a persistência do objeto?


0

Você verificou se existe algum trigger no seu banco de dados?
Verificou também se há algum log de saída após a persistência do objeto?


Trigger não há. Inclusive acabei de testar usando aquele banco em memória que vem por padrão, e deu o mesmo erro na segunda vez que salvo um objeto (varia).

E log de saída como assim.. tipo um println? Aqui não tem nada, fora os meus println que eu fiz..
06/07/2009 00:00


0
Vou dar um chute (chute MESMO): pode ser algum problema relativo ao plugin do hibernate.
Experimente as seguintes alternativas:

execute o comando grails clean dentro do seu projeto

Apague o diretório .grails que se encontra dentro do seu diretório home e execute a aplicação novamente. Isto irá fazer com que as configurações do Grails sejam recarregadas.


0
Olá,

fpdella. Acho que se você adicionar flush no save do objeto Permissão o problema vai ser resolvido.

objeto.save(flush:true)
07/07/2009 00:00


0
Esse plugin do hibernate já fica instalado no GRAILS_HOME, mesmo eu deletando a pasta .grails ele permanece lá. Eu dei um grails uninstall-plugin hibernate, ele só tirou do projeto, mas continua lá no core do grails, tem como tirá ele do core e instalar de novo?

Será que não é bug desse plugin com a versão 1.1.1? Estou usando a versão 1.1.1 do hibernate...

Esses dias tive um problema com a última versão do plugin acegi (0.5.1), ele não salvava a permissão na tela do usuário, desinstalei e instalei várias vezes, criei outros projetos, até achei q era problema do hibernate, daí eu instalei a versão 0.5 do acegi e funcionou. Ninguém teve este mesmo problema?

----

Usei esse flush:true em algumas controllers e nas outras deixei sem, e em ambos os casos não deram problemas... espero que não dê mais.

Percebi que o código gerado pelo grails dos controller da versão 1.0.4 é diferente da 1.1 >, da 1.1 em diante o save já vem com o flush:true, e o delete vem com tratamento de exceções. Estou tentando deixar parecido os controller da minha aplicação com as otimizações da versão 1.1.1, este código veio da 1.0.4, mas daí miguei a aplicação pra 1.1.1.
09/07/2009 00:00



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