
0

0
06/07/2009 00:00
[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?
Henrique Lobo Weissmann (Kico)
Pontos: 2591

0

0
06/07/2009 00:00
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..
fpdella
Pontos: 1

0

0
07/07/2009 00:00
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.
Henrique Lobo Weissmann (Kico)
Pontos: 2591

0

0
07/07/2009 00:00
Olá,
fpdella. Acho que se você adicionar flush no save do objeto Permissão o problema vai ser resolvido.
objeto.save(flush:true)
marciorja
Pontos: 0

0

0
09/07/2009 00:00
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.
fpdella
Pontos: 1