Erro: "Cannot cast object" ao persistir objeto
17/09/2011 10:48
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