Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/09/2007 09:18:29
|
fmpizani
Equipe
Membro desde: 03/09/2007 09:09:34
Mensagens: 13
Offline
|
Bom dia galera,
Estou começando a trabalhar agora com o neo e estou tendo um problema na hora de carregar os relacionamentos da minha entidade. Ao tentar acessar os relacionamentos da minha entidade dentro do service está ocorrendo erro no carregamento. Tentei definir uma transação para o meu método do service mas não estou conseguindo.
Será que alguém consegue me ajudar??
Valeu!!!
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/09/2007 12:50:29
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Seja bem vindo ao fórum e espero que encontre resposta para todas as dúvidas que tiver.
Voltando a sua pergunta:
Teria como postar o fonte e a excessão?
Posta a action, DAO e service.
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/09/2007 13:11:22
|
fmpizani
Equipe
Membro desde: 03/09/2007 09:09:34
Mensagens: 13
Offline
|
Obrigado Pedro,
O cenário é o seguinte:
Eu tenho uma entidade Empresa que possui uma lista de profissionais, mapeada da seguinte forma em Profissional:
Code:
@ManyToOne
@JoinColumn(name = "AD6NUMEM", nullable = false)
public Empresa getEmpresa() {
return empresa;
}
e em Empresa:
Code:
@OneToMany(mappedBy = "empresa")
public List<Profissional> getProfissionais() {
return profissionais;
}
Eu tenho um service chamado EmpresaService e reimplementei o método delete da seguinte forma:
Code:
public void delete(Empresa empresa) {
empresa = this.load(empresa);
if (empresa.getProfissionais() != null
&& !empresa.getProfissionais().isEmpty()) {
throw new NeoException("A empresa não pode ser "
+ "excluída "
+ "pois possui profissionais cadastrados.");
}
super.delete(empresa);
}
Quando o método getProfissionais() é executado a seguinte exceção é disparada:
Code:
13:06:13,105 ERROR [LazyInitializationException] failed to lazily initialize a collection of role: br.com.geoexplore.geoenterprise.adm.bean.Empresa.profissionais, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.geoexplore.geoenterprise.adm.bean.Empresa.profissionais, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
at org.hibernate.collection.PersistentBag.isEmpty(PersistentBag.java:229)
at br.com.geoexplore.geoenterprise.adm.service.EmpresaService.delete(EmpresaService.java:44)
at br.com.geoexplore.geoenterprise.adm.service.EmpresaService.delete(EmpresaService.java:1)
at br.com.linkcom.neo.controller.crud.CrudController.excluir(CrudController.java:315)
at br.com.geoexplore.geoenterprise.adm.controller.GeoController.excluir(GeoController.java:18)
at br.com.linkcom.neo.controller.crud.CrudController.doExcluir(CrudController.java:303)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at br.com.linkcom.neo.controller.MultiActionController.invokeNamedMethod(MultiActionController.java:504)
at br.com.linkcom.neo.controller.MultiActionController.handleRequestInternal(MultiActionController.java:367)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:717)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658)
at br.com.linkcom.neo.controller.DispatcherServlet.doService(DispatcherServlet.java:59)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
Eu fiz o debug do código e verifiquei que se eu tentar executar o método getter dentro do DAO, a lista é carregada normalmente. Então eu imagino que deve ser algo ligado ao contexto da transação, mas não consegui resolver.
Valeu pela ajuda!!
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/09/2007 13:46:45
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Cara.. seguinte.. se você montar as fk's o neo já faz este tratamento automaticamente. Não precisa disso.
agora.. quando a este problema que está dando é porque você não carregou a lista..
ai você deve procede mais ou menos assim:
Code:
Public Bean loadCompleto(Bean bean){
return query()
.leftOuterJoinfetch("bean.lista lista")
.entity(bean)
.unique()
}
entao.. você terá que substituir o load do método delete por este que você vai criar, que irá carregar a lista..
entendeu?
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/09/2007 13:53:16
|
fmpizani
Equipe
Membro desde: 03/09/2007 09:09:34
Mensagens: 13
Offline
|
Entendi sim...
Muito obrigado!!
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/09/2007 13:55:51
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Por nada! qualquer coisa posta ai!
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/09/2007 10:34:48
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
Eu estou com uma dificuldade tambem envolvendo o lazyload, no caso tenho uma tabela venda q tem uma lista de itensvenda e cada item venda tem um estoque que tem um produto.
No caso represento minha venda entrada com um t:detalhe e na hora de selecionar o estoque do itemvenda estou tendo esse erro porque meu description property é montado com info de produto.
Com essa situação fiquei sem saber onde carregar o produto... Tentei carregar no updateEntradaQuery do VendaDAO mas não consegui montar uma query que pegue produto.
Se alguem puder me ajudar agradeço.
abraços
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/09/2007 19:48:39
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Teria como postar o jsp de entrada e o metódo updateEntradaQuery?
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/09/2007 09:21:57
|
robmsjr
MultiAction
Membro desde: 26/06/2007 19:30:49
Mensagens: 88
Offline
|
Teria, mas não vai adiantar.
no meu updateQuery eu só coloquei fetchCollection("itens")
que carrega a lista de ItemVenda.
E no meu jsp funciona tudo ok, menos quando edita que o campo da tabela venda.itemVenda.estoque.produto.nome da o lazy collection. O erro ocorre corretamente, eu só não sei como fazer pra carregar o produto no meu entrada query.
Se mesmo assim precisar dos arquivos eu posto aqui.
abraços e valeu pela ajuda.
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/09/2007 11:14:45
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Cara.. ao invés de usar a fetchCollection usa .leftOuterJoinFetch("bean.lista lista")
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
|