Ola, eu ser nova aqui e preciso de ajuda Desculpe mas ainda estou estudando Portugues e
iniciei estudar EJB ha um mes… estou aprendendo sobre transactions, mas nao estou entendendo
porque o source abaixo nao funciona! Nao deveria persistir c1 e executar rollback para c ???
Eu não conheço o processo de transação com EJB, apenas com Spring.
Mas o seu código do primeiro método cria uma transação caso não exista, e caso o seu método seja chamada do seu método
possua transação ele será executado na transação corrente.
No seu primeiro método sempre será persistido o objeto c porque a exceção que você lança não é verificada.
REQUIRED_NEW deveria ser uma nova transaction e teria que ter COMMIT OK!
e ter ROLLBACK na REQUIRED. Certo?
D
Daniel.F
O required_new sempre vai criar uma nova trnsação, mesmo que o método em execução tenha sido chamado em contexto transacional.
natasha_sch
OK, mas o persist no test2() nao ocorre commit! É isso que nao consigo enterder!
Esta ocorrendo ROLLBACK nos test1() e test2().
D
Daniel.F
Se persistiu no banco de dados é porque salvou.
Como você que não está havendo commit??
natasha_sch
Nao esta persistindo nada!
felipeguerra
Como está o arquivo persistence.xml?
natasha_sch
Estou usando Hibernate e esta funcionando certo… o problema esta com essas transactions…
se eu drop (esqueci a palavra a linha da Exception, ocorre o COMMIT das duas entities…
felipeguerra
natasha_sch:
Estou usando Hibernate e esta funcionando certo… o problema esta com essas transactions…
se eu drop (esqueci a palavra a linha da Exception, ocorre o COMMIT das duas entities…
você quis dizer apagar?
Prezada, pelo que eu entendi, ao lançar uma RuntimeException nada é persistido, ok?
Onde está o erro nisso?
drigo.angelo
Posta o método que ta chamando esses metodos!!
depois que é lançada uma RuntimeException eu acho que o programa para de executar, se não houver um bloco catch…
natasha_sch
Isso drop = apagar
Isso mesmo… mas deveria persistir porque REQUIRES_NEW nao inicia uma new transaction independente???
Entao o certo nao seria c1 persiste e c nao!
Eu não sei se o exemplo que você citou atende ao que foi colocado no link, pois um método A é chamado dentro de um método B na mesma classe. Nunca passei por isso.
Enfim, como o seu caso é apenas um teste, crie um outro EJB e faça a mesma coisa, ou seja, anotar os métodos com diferentes escopo de transação e testar.
Good luck
drigo.angelo
Great material :!:
Try inverting the order you call the methods, (it should produce the same results, shouldn’t it ?) then we’ll eliminate the possibility of the new RuntimeException being stopping your aplication!
[edit 1]
post foi escrito junto com o anterior, ou seja, não havia lido o do felipe quando submeti xD
[/edit]
felipeguerra
Só mais um detalhe, como está anotado o em: EntityManager?
natasha_sch
Privet
Daniel, e isso mesmo! Em 2 EJBs funcionou
Acho que EntityManager estava confuse com a TransactionType
Spasibo! voces sao gentlemen
felipeguerra
natasha_sch:
Privet
Daniel, e isso mesmo! Em 2 EJBs funcionou
Acho que EntityManager estava confuse com a TransactionType