| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/09/2010 15:59:37
|
santos.levi
JavaTeenager
Membro desde: 19/05/2008 16:27:01
Mensagens: 192
Offline
|
Boa tarde pessoal!
É o seguinte estou em um projeto que usa EJB3 e JSF.
O problema é o seguinte quando quero fazer uma consulta por exemplo de usuarios, ai estou debugando dentro do meu SessionBean eu visualizo os itens que estão na coleção, os usuarios que estão nessa coleção cada um tem um relacionamento por exemplo com endereço, no session bean quando eu estou em modo de debug e vejo os itens da lista mostra os usuarios e os seguintes relacionamentos, mas quando chego no meu managedBean os outros objetos que estão relacionados com esse usuario não aparecem se eu tentar usar por exemplo o endereço eu recebo um NullPointer.
Isso só acontece quando eu Injeto o EntityManeger no session bean e uso query nativa se usar namedQuery funciona legal.
Alguem já passou por isso? como resolvo isso?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2010 17:59:14
|
clesiojunior
What is classpath?
![[Avatar]](/images/avatar/46dce5f2f0e61edb70931a00d00a464e.jpg)
Membro desde: 12/08/2005 12:39:01
Mensagens: 6
Offline
|
O melhor mesmo é utilizar NamedQuery. É padrão no JPA.
Mesmo assim tenta utilizar INNER JOIN ou RIGHT OUTER JOIN (RIGHT JOIN), na nativa.
Assim (exemplo): caso vc queira o endereço de um usuario:
SELECT endereco FROM Usuario as u RIGHT JOIN u.endereco as endereco WHERE u.qualquer = exemplo qualquer;
ou vc pode retornar uma lista de usuarios pelo endereco tal:
SELECT usuarios FROM Endereco as e INNER JOIN e.usuarios as usuarios WHERE e.cidade = brasilia;
Atenciosamente,
Clesio Júnior
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2010 21:40:52
|
Jair Rillo Junior
Moderador
![[Avatar]](/images/avatar/31b3b31a1c2f8a370206f111127c0dbd.jpg)
Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline
|
O problema pode ser que seu relacionamento está como Lazy. Quando você está no EJB (A Entity está gerenciada pelo EntityManager) e assim você consegue ver o relacionamento. Quando a Entity fica detached (quando foi para o ManagedBean) o relacionamento Lazy que não foi previamente carregado, irá realmente dar problema.
Aconselho dar uma estudada nessa parte de entity gerenciada, detached, new, etc.
|
Jair Rillo Junior
http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate |
|
|
 |
|
|