Erro: "Cannot cast object" ao persistir objeto
17/09/2011 10:48
0
Olá, pessoal!

Estou com um erro de persistência em classes de domínio do Grails. Vou tentar explicar com um exemplo simples:

Tenho uma classe "Empresa", como abaixo:
------------------------------
class Empresa {

String nome

static constraints = {
nome(maxSize:40, blank:false)
}

void setNome(String value){
nome = value?.toUpperCase()
}

String toString(){
return nome
}
}
-------------------------------
Tenho uma classe "Usuario" com um evento que insere automaticamente o valor do atributo "empresa", ou seja, ele precisa ser persistido automaticamente (não é dada opção de escolha):
-------------------------------
class Usuario {

String nome
String cargo
Empresa empresa

static belongsTo = [empresa:Empresa]

static constraints = {
nome(maxSize:20, blank:false)
cargo(maxSize:30, blank:false)
}

def beforeInsert = {
empresa = 'EMPRESA_X'
}

String toString(){
return nome + ' (' + cargo + ')'
}
}
----------------------------------

Estou utilizando o scaffold para gerar os controladores das duas classes. Primeiro cadastro algumas empresas normalmente, mas ao tentar cadastrar um usuário, ocorre o seguinte erro:

Error 500: Executing action [save] of controller [br.com.teste.UsuarioController] caused exception: Cannot cast object 'EMPRESA_X' with class 'java.lang.String' to class 'br.com.teste.Empresa'

O que estou fazendo de errado? Ou existe uma forma melhor de fazer isso?

Obrigado!
Tags: cast object, domínio, erro persistência, evento


0
Opa!! Resolvido!

Cometi um erro estúpido ao tentar inserir uma String onde deveria ser uma classe!

No caso, é só alterar o evento da classe "Usuario" para este:

def beforeInsert = {
empresa = Empresa.findByNome('EMPRESA_X')
}

:-)
17/09/2011 11:23



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