Help - Spring + Hibernate +Transaction  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
fabioebner
GUJ Ranger
[Avatar]

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
heatcold
JavaGuru
[Avatar]

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

fabioebner
GUJ Ranger
[Avatar]

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?
heatcold
JavaGuru
[Avatar]

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

 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team