org.hibernate.LazyInitializationException em relacionamento one to many
09/05/2012 19:08
0
Tenho estas duas classes, bem simples:


class Pesquisa {

Tenant tenant
String titulo

static constraints = {
}

static hasMany = [
questoes: Questao
]

}


class Questao {

static constraints = {
}

String tituloRelatorios
String questao
TipoQuestao tipo
String[] opcoes
}




Abro o grails console e executo este comando:
Pesquisa.get(1)

Funciona e retorna um objeto normalmente... Isso serve para mostrar que o objeto que procuro de fato existe no banco de dados.

Agora se eu faço isso:
Pesquisa.get(1).questoes

Recebo um org.hibernate.LazyInitializationException

Encontrei algumas pessoas sugerindo este workarround:
Pesquisa.withTransaction { status ->
Pesquisa.get(1).questoes
}

Mas também não funcionou.

Alguem já passou por esta situação?

Entendo por que o hibernate joga esta exceção, mas não entendo como se aplica neste caso.
Por acaso o grails implicitamente abre a sessão e fecha logo após o método get? Se sim, como contornar isto?
Tags: hibernate one-to-many


0
Aqui quando eu estou trazendo um model q tem uma relação one-to-many que vou usar faço o seguinte:
(profile tem varios profileLinks)
Profile.findByUser(currentUser, [fetch: [profileLinks: 'eager']])

não sei se responde... mas precisa declarar quando precisa fazer o fetch
10/05/2012 20:55


0
Tenta fazer o seguinte:
Pesquisa.findById(1, [fetch: [questoes: 'eager']])

se resolver avisa o/
10/05/2012 20:57



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