Bug Hibernate, Grails? (Ou meu?? rsrs)
23/01/2012 13:57
0
Pessoal,

Olhem que erro curioso. Tenho duas classes de domínio:


class ClasseUm {

Long codigo
ClasseDois classeDois

static mapping = {
id name: 'codigo', generator: 'assigned'
}
}


e


class ClasseDois {

Long codigo
String nome

static mapping = {
id name: 'codigo', generator: 'assigned'
}
}


Acrediam que se eu executar a query:


ClasseUm.executeQuery ("select c1 from ClasseUm c1 where c1.classeDois.nome = 'nome'")
,

e houver algum resultado a ser retornado, a minha ClassDois não funciona mais?!

Mas isso acontece apenas se o primeiro comando da aplicação referenciando a ClasseDois for um select que busque a classe por meio de um join.

O erro pode ser simlado com esse simples controlador:


class TesteController {

def index = {

def resultado = ClasseDois.executeQuery ("select c1 from ClasseUm c1 where c1.classeDois.nome = 'nome 2'")

def c2 = new ClasseDois()
c2.setNome('essa linha não funciona')

}

def popular = {
ClasseDois c2 = new ClasseDois()
c2.codigo = 1
c2.nome = 'nome 2'
Assert.notNull c2.save()

ClasseUm c1 = new ClasseUm()
c1.codigo = 1
c1.classeDois = c2
Assert.notNull c1.save()
}
}


O erro que é disparado é:
- "Object is not an instance of declaring class", caso use-se algo como c2.nome = 'qq coisa', ou
- "ClasseDois cannot be cast to ClasseDois_$$_javassist_7", caso use-se algo como c2.setNome('qq coisa')


Esse problema acontece sempre que ClasseDois for mapeada com generator: 'assigned' e pode ser contornado com um BootStrap que faça uma instanciação e um discard de cada uma dessas classes.

Felizmente (para quem inicia um projeto agora) esse erro acontece na versão 1.3.4 mas não na 2.0 (no 1.3.7 não testei).

Se alguém já tiver ouvido valar dessa questão, por favor entre em contato.

Att,

Ricardo Terzella
Tags: generator assigned error


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