| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2012 14:26:08
|
fabioebner
GUJ Ranger
![[Avatar]](/images/avatar/009c434cab57de48a31f6b669e7ba266.jpg)
Membro desde: 10/06/2005 14:07:00
Mensagens: 822
Offline
|
Amigos, estou com um problema em relacao a transacoes utilizando o Spring + Hibenate
Eu tenho 2 metodos anotados da seguinte forma:
o metodo 1 chama o metodo 2,
logo o seguindo metodo PRECISA de uma conexao, e pega a do metodo 1, porem o metodo 2 da um throw, ele me retorna o seguinte erro:
Caused by: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
pelo que eu entendi que pq o primeiro metodo esta setado como rollback-only, mas como eu faco para arrumar isso?? nao posso tirar o REQUIRED(requer 1 transação caso nao tenha cria uma) do meu 2 metodo, pq ele pode ser tanto chamado separadamente como dentro do metodo 1, e quando for chamado pelo metodo 1 e der algum erro na hora de salvar, o que estou salvando no metodo 1 tbm nao podde ser salvo.
alguem pode me ajudar?? nao descobri como resolver isso ainda.
obrigado
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2012 15:13:35
|
heatcold
JavaGuru
![[Avatar]](/images/avatar/39abd1c6e1d6aa57455adf5eda4325a8.jpg)
Membro desde: 22/09/2006 10:34:26
Mensagens: 240
Offline
|
Infelizmente, não consegui entender direito sua pergunta, entretanto, tenho usado o controle de transações do spring
e funciona sem problema.
o que tenho feito é anotar o serviço e não os métodos.
por exemplo:
Veja se resolve seu problema!
This message was edited 1 time. Last update was at 26/01/2012 15:15:40
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2012 15:42:01
|
fabioebner
GUJ Ranger
![[Avatar]](/images/avatar/009c434cab57de48a31f6b669e7ba266.jpg)
Membro desde: 10/06/2005 14:07:00
Mensagens: 822
Offline
|
Entao o meu problema e que eu possuo metodos diferenciados na parte de conexao, alguns precisam de um conexao, outros nao. voce anotando no servico, voce nao fica preso nessa situacao??
exemplo:
entendeu??
o meu prolema e qdo eu tenho 2 metodos, de 2 servicos diferentes e os dois anotados como REQUIRED,
o metodo 1 da classe 1 chama o metodo 2 da classe 2, se eu der uma exception no meu metodo 2, ele tem que dar um rollback no que eu salvei no metodo 2 e tambem dar rollback no que eu salvei no metodo 1
ai que eu estou tendo o problema..
entendeu?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2012 20:29:49
|
heatcold
JavaGuru
![[Avatar]](/images/avatar/39abd1c6e1d6aa57455adf5eda4325a8.jpg)
Membro desde: 22/09/2006 10:34:26
Mensagens: 240
Offline
|
entendi. e realmente nunca testei esse caso
na realidade, eu não acredito que seja uma boa abordagem ter um serviço chamando o outro.
justamente para evitar esse tipo de situação em que você se encontra.
por que não implementa toda a sua transação, de forma atomica, em apenas um método do serviço?
claro que nada impede que esse método chame diversos outros metodos do mesmo serviço
também não seria problema ter mais de DAO injetado no mesmo serviço
This message was edited 2 times. Last update was at 27/01/2012 07:42:07
|
|
|
 |
|
|
|
|