org.hibernate.LazyInitializationException em relacionamento one to many
Postado em 09/05/2012 19:08
0
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
Magno Machado Paulo
Pontos: 22






0
0
10/05/2012 20:55
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

Mussatto
Pontos: 345



0
0
10/05/2012 20:57
Tenta fazer o seguinte:
Pesquisa.findById(1, [fetch: [questoes: 'eager']])

se resolver avisa o/

Mussatto
Pontos: 345



 


Esqueceu sua senha?
 
Grails Brasil é mantido por itexto Desenvolvimento de Projetos Ltda.
Em caso de problemas, sinta-se livre para procurar Henrique Lobo Weissmann (Kico) por e-mail: kicolobo@itexto.net
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão (clique no logo à direita para maiores detalhes)