object is not an instance of declaring class
03/01/2012 13:11
0
Senhores,
Quando eu instancio um objeto, e tento setar os valor para poder salvar no banco de dados, ele estoura uma exceção:

caused exception: object is not an instance of declaring class

Como o problema é intermitente, piora as coisas.
Já li sobre o timestamps do TomCat, já li sobre o id usado na Classe, mas nenhum dos casos a pessoa tem certeza, ele acha.
Gostaria de saber se alguém tem ciência desse erro e se sabe o que acontece.

Ficarei no aguardo.
Tags: object is not an instance of declaring class grails error exception


0
Poste a sua classe e uma action que está utilizando que causa a 'exception'.
03/01/2012 14:07


0
Oi Thalles, é muito comum quando estamos instanciando nossos objetos a partir do controlador usando os atributos do parametro.

Será que não há algum atributo que seja de um tipo diferente de string que você está setando não? Algo como uma data, por exemplo?


0
Pessoal,

Estou com um problema parecido que, ao que parece, está acontecendo de fato em função de uma inicialização indevida de alguns objetos, mas não em função de um cast como o de data.

Em alguns casos, para evitar de fazer consultas desnecessárias ao banco eu utilizava a seguinte estratégia para definir uma chave estrangeira num objeto de domínio:

Pessoa pessoa = new Pessoa()
pessoa.uf = new Uf(id: "RJ")
pessoa.save()

Repare: Uf com id = "RJ" já existe em minha base. Estou apenas referenciando ela na chave estrangeira. E, isso funciona. O problema é que adiante posso ser surpreendido com um erro como o relatado por Thalles.

O que compreendi disso é que o Hibernate (uso essa biblioteca), quando faço o que fiz, carrega em sua sessão um objeto de id == "RJ" mas sem as demais informações que deveriam ter essa instância. Por algum motivo isso configura-se para o Hibernate como "object is not an instance of declaring class".

Minha suposição pode ser completamente inconsistente. Gostaria de ouvir outras opiniões, inclusive a respeito da questão de boas práticas de definição de chaves estrangeiras.

Att,

Ricaro Terzella


0
Foi mal, mas um post, mas só pra me inscrever no post.


0
Tente usar:

Pessoa pessoa = new Pessoa()
pessoa.uf = Uf.get("RJ")
// ou
pessoa.uf = Uf.findWhere(id:"RJ")
// ou
pessoa.uf = Uf.findById("RJ")
pessoa.save()


Veja a maneira que melhor se adapta ao seu código.
OBS: O 'Uf.get("RJ")' funciona com Long não sei se vai funcionar com Strings.
13/01/2012 14:09



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