| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/02/2005 11:38:37
|
bhleitao
HelloWorld
![[Avatar]](/images/avatar/080acdcce72c06873a773c4311c2e464.jpg)
Membro desde: 27/01/2005 11:21:39
Mensagens: 14
Offline
|
Galera, quanto tento pegar uma collection no relacionamento 1:n, acontece a seguinte exceção.
java.lang.IllegalStateException: A CMR collection may only be used within the transction in which it was created
O que isso significa? só pode ser usada dentro da mesma transação? humm.
isso parece ferir o conceito de persistencia.
Abracos
breno leitão
|
[]´s Breno Leitão |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/02/2005 17:16:17
|
duardor
Virtual Machine Man
![[Avatar]](/images/avatar/18d8042386b79e2c279fd162df0205c8.jpg)
Membro desde: 04/12/2002 16:26:48
Mensagens: 556
Localização: BRAZIL
Offline
|
Vc tah recuperando a collection em uma transacao (veja se nao tah requiresnew) e depois pega a collection e tenta iterar nela .. Se fere o conceito de persistencia, eu nao entendi, mas nao fere a spec EJB, que diz exatamente isso...
|
Eduardo Rodrigues
Belo Horizonte - MG |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2005 08:14:16
|
bhleitao
HelloWorld
![[Avatar]](/images/avatar/080acdcce72c06873a773c4311c2e464.jpg)
Membro desde: 27/01/2005 11:21:39
Mensagens: 14
Offline
|
Duador,
Entao, por que eu não posso pegar um collection dentro de uma transação? Eu tenho que fazer o commit primeiro?
Pelo que eu percebi, isso acontece porque eu estou fazendo teste com o cactus, que fica em um container servelet e o ejb está em um container ejb. Assim, sendo eles containers diferentes, ele não consegue fazer essa transferencia, Note que em um session bean eu consigo executar um código exatamente igual! Viajei?!?
Valeu
Breno
|
[]´s Breno Leitão |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2005 09:01:34
|
duardor
Virtual Machine Man
![[Avatar]](/images/avatar/18d8042386b79e2c279fd162df0205c8.jpg)
Membro desde: 04/12/2002 16:26:48
Mensagens: 556
Localização: BRAZIL
Offline
|
Eu nao falei que você não pode pegar um collection dentro de uma transacao... Eu soh falei que você deve ITERAR nela na mesma transacao...
imagine um método getMeuRelacionamento que esteja marcada com requiresnew... Ele retorna uma collection de CMRs... Quando você chama este método, a tarnsação corrente , se existir, é suspensa, uma nova é criada... Sua collection será "criada" na nova transação... Quando o método completa a tarnsação 'nova' é terminada, e a transação antiga é retornada... Repare que a collection foi criada na transação que terminou... Quando você, na transação que continuou, itera por essa collection, ele dá o erro mencionado...
Isso aconreceu comigo no JBOSS, e a parte da especificação que diz isso é a 10.4.2.2 Container-managed relationships ... To me referindo ao documento da 2.0...
Atenciosamente,
|
Eduardo Rodrigues
Belo Horizonte - MG |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2005 09:16:35
|
bhleitao
HelloWorld
![[Avatar]](/images/avatar/080acdcce72c06873a773c4311c2e464.jpg)
Membro desde: 27/01/2005 11:21:39
Mensagens: 14
Offline
|
Ahh saquei o problema. Valeu. Mas o problem é que eu não estou iterando a collection. Eu pego e imprimo a mesma, e mesmo assim o erro surge.
Mas os tipos de transações possíveis são os seguintes:
NotSupported
Supports
Required
RequiresNew
Mandatory
Never
Sendo que o default é o Supports (xdoclet) . Assim sendo, o problema não deveria acontecer, correto!? Coloquei uma transação do tipo required também e o mesmo erro. humm..
Valeu
Breno
|
[]´s Breno Leitão |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/01/2007 17:34:03
|
uchoaaa
JavaChild
Membro desde: 01/04/2006 21:02:33
Mensagens: 133
Offline
|
Pois é, aconteceu o mesmo comigo. Dei uma lida aqui, mas não entendi mto bem, principalmente como resolver.
Realmente, quando itero minha colexao dentro do Session, tudo funciona sem problemas. A excessao é lançada quando acesso essa colecao no meu Servlet.
Acontece que preciso iterar essa colecao de Proxys pra gerar meus objetos de negócio (os VOs, se entendi bem a difinicao de VO) e encaminhar pra exibicao no JSP..
Segue o codigo..
Isso tudo pra evitar que os Sessions retorne VOs para o cliente web.. (É o recomendável, nao?! )
Tem como alguem me ajudar??
|
|
|
 |
|
|