| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 06:08:17
|
vitor.valerio
HelloWorld
Membro desde: 16/11/2007 23:31:22
Mensagens: 13
Offline
|
Olá a todos,
estou com um problema ao serializar meus objetos através do VRaptor.
Se no JPA o relacionamento entre funcionario e setor for LAZY
o VRaptor serializa o objeto setor mas como um proxy do hibernate
Alguém sabe como resolver isso sem que seja definir o relacionamento como EAGER?
Desde já obrigado
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 11:12:08
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 5632
Offline
|
vc vai ter que forçar o load da coleção...
ou chamando funcionario.getSetor();, ou se vc estiver usando HQL, vc pode forçar:
não testei essa query, mas é algo do tipo.. talvez vc não precise da palavra fetch
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2010 17:00:32
|
vitor.valerio
HelloWorld
Membro desde: 16/11/2007 23:31:22
Mensagens: 13
Offline
|
Olá Lucas,
Está OK. Obrigado.
Nem precisei forçar o hibernate buscar no banco.
Fazendo os testes de serialização de objetos pelo XStream e Vraptor percebi um problema:
o XSTream usa getters e setters, correto!?
no entanto, fiz um teste assim:
e ele sempre retorna "atributo". Ele não deveria usar o método getLocal?
desde já obrigado
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2010 17:59:33
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 5632
Offline
|
por padrão o XStream usa fields... se vc quiser que ele use getters e setters vc precisa registrar o converter JavaBeanConverter:
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/04/2010 22:51:42
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
a proxima versão do vrpator deve solucionar esse problema do lazy ^^
na verdade a que esta no snapshot já resolve...
só falta alguns detalhes pra ficar 100% =x
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2010 10:59:01
|
vitor.valerio
HelloWorld
Membro desde: 16/11/2007 23:31:22
Mensagens: 13
Offline
|
Lucas,
consegui fazer isso LOCAL, sem usar o Vraptor... quando uso o Vraptor nada é serializado...
eu já criei uma classe chamada CustomXMLSerialization para retornar o XStream com o registro do converter
sabe oq pode estar acontecendo?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2010 12:35:58
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 5632
Offline
|
essa CustomXMLSerialization estende XStreamXMLSerialization? ela sobrescreve o método getXStream? ela está anotada com @Component?
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2010 13:29:33
|
vitor.valerio
HelloWorld
Membro desde: 16/11/2007 23:31:22
Mensagens: 13
Offline
|
Sim.
está tudo ok.
segue abaixo o código:
Esse component está sendo usado pelo Vraptor... o único problema é o JavaBeanConverter... quando eu registro ele... nada é serializado...
quando executo ele local funciona normalmente
pesquisei no google mas não encontrei uma solução...
cheguei a implementar o método canConverter e canHandle mas não mudou nada.
This message was edited 1 time. Last update was at 09/04/2010 13:30:50
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2010 16:21:11
|
vitor.valerio
HelloWorld
Membro desde: 16/11/2007 23:31:22
Mensagens: 13
Offline
|
Lucas,
consegui.
Estava fazendo o canConvert retornar true quando o tipo era o tipo do retorno do atributo e não da classe.
Erro meu.
Obrigado pela ajuda.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2010 23:31:47
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4154
Localização: São Paulo
Offline
|
O VRaptor serializa a proxy justo porque o XStream usa os atributos. Como ele acessa um atributo diretamente, se seu objeto é uma proxy (o session.load devolve proxy, apenas o .get faz uma requisicao direta sempre) ele vai serializar um monte de nulls e atributos especiias.
O Vitor e o Lavieri perceberam muito bem isso.
Vitor, pra ser sincero, eu havia tentado sua solução há algum tempo atrás, e tive o mesmo problema, tanto em testes com vraptor ou diretamente com o XStream. Em outras palavras, acho que o JavaBeanConverter nao esta mais funcionando como deveria.
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/04/2010 15:12:16
|
vitor.valerio
HelloWorld
Membro desde: 16/11/2007 23:31:22
Mensagens: 13
Offline
|
Olá a todos,
havia esquecido de colocar a solução aqui.
A conclusão que eu cheguei é que o XStream não funciona corretamente quando você não especifica as classes que vão ser utilizadas pelo JavaBeanConverter mas, quando você especifica ele funciona direito.
Não fui atrás para saber o porque mas segue a solução abaixo:
Assim ele funciona corretamente e, não lendo a partir do field, ele não pode retornar o proxy do Hibernate.
Obrigado a todos
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/04/2010 15:56:49
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4154
Localização: São Paulo
Offline
|
oi vitor
a versao 3.1.2, que deve sair na semana que vem, ja vem com uma correcao para o problema.
paulo
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/04/2010 16:13:37
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2673
Localização: Porto Alegre
Offline
|
Paulo Silveira wrote:a versao 3.1.2, que deve sair na semana que vem, ja vem com uma correcao para o problema.
O que foi feito para corrigir o problema?
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/04/2010 16:20:14
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 5632
Offline
|
basicamente foi inicializar os proxies antes de serializar... o lavieri que fez =)
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/04/2010 16:32:55
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
Lucas Cavalcanti wrote:basicamente foi inicializar os proxies antes de serializar... o lavieri que fez =)
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
|
|