| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2008 17:35:28
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Tenho os seguintes mapeamentos e recebo um org.hibernate.LazyInitializationException: could not initialize proxy - no Session.
Alguém poderia me indicar o que há de errado com esses mapeamentos??
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2008 17:43:59
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Não é problema nos mapeamentos....
O problema é que o(s) objeto(s) relacionados ao objeto que está trabalhando (os tais many-to-one) são LAZY, ou seja, só serão carregados quando chamados.
Porém você deve estar transitando seu objeto para fora do container (o contexto persistente), assim perdendo a conexão com o banco para buscar os dados lazy.
Dai ao tentar utilizar qualquer dado/objeto lazy ele dá esse erro pois não é possível carregar os dados requeridos.....
Solução.
1) Utilize Eager (bad)
2) Inicialize os dados que irás utilizar fora do container antes de sair dele.
Como? Faça chamadas aos atributos...
tipo
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2008 20:16:39
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Opa, então, nem citei acima, mas pra salvar tá funcionando legal... ele grava os registros normalmente...
É só pra listá-los que está dando isso...
Resumi as ações da busca num método só pra ficar mais fácil mostrar aqui:
Como ficaria aqui por exemplo pra inicializar os dados antes de retorná-los, como proposto na reposta acima??
Desde já muito obrigado!!
Adriano
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2008 09:17:52
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Ummm... seu problema é mais simples....
A questão é que vc está fechando a session após consultar.
Porém, existe algum dado da lista que ainda não foi carregado....
Por exemplo:
Você tem uma lista de BeanGame, e cada BeanGame tem um BeanTeam.
Seu BeanTeam é lazy inicialization dentro do BeanGame.
Quanto você fizer algo como.
se o BeanTeam é lazy, no momento da chamada ele vai tentar ir no banco pra carregar os dados do BeanTeam.
Porém como sua sessão foi fechada
[/code]session.close();[/code]
ele não consegue carregar e estoura esta excessão.
Para resolver, ou você torna seu atributo EAGER (fetch="join", veja mais) ou você faz uma chamada ao atributo antes de fechar a sessão.
Ex.
Dai ele vai ser carregado antes de fechar a sessão......
Até.
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2008 17:20:22
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Então cara... pelo que li faz sentido e entendi a possível causa.
Mas chamei as duas propriedades que são mapeadas como many to one e continuou dando exatamente o mesmo erro.
A exceção é disparada no momento que o objeto é usado pela primeira vez.
Achei estranho, não deveria gerar um NullPointerException?
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2008 17:27:57
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Isso precisa ser feito antes de fechar a sessão......
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2008 17:28:40
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Vou colocar aqui também os scripts de criação das duas tabelas...
Às vezes é aí que está o erro...
Muito obrigado pela paciência...
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2008 17:30:41
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Isso precisa ser feito antes de fechar a sessão......
Chame algum método do beanname....
assim....
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2008 17:53:24
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Então, hehe, a exceção agora já não é mais no proxy, session, etc...
Gera uma NullPointer... debuguei e vi que os objetos de BeanTeam estão nulos no BeanGame.
Pelo menos não é o mesmo erro.
Muito obrigado pela ajuda!!
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2010 09:38:23
|
aureliolima
JavaChild
![[Avatar]](/images/avatar/f064a2160853b6381ed86c119452dad1.png)
Membro desde: 04/03/2009 15:02:02
Mensagens: 100
Offline
|
tb tava tendo o mesmo erro que vc...
mas no meu caso era pra acessar um atributo de uma classe herdada, porém resolvi o problema apenas setando o lazy=true, no mapeamento da classe herdada.
|
Atenciosamente.
Aurélio Camara Lima
Desenvolvimento de Sistemas Web
Passo Fundo / RS
Página Pessoal: www.aitecinfo.com.br |
|
|
 |
|
|