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 ???
Obrigado,
Natasha 
@TransactionAttribute(TransactionAttributeTpe.REQUIRED)
public void test1() {
Customer c = new Customer();
c.setNome("Natasha");
em.persist(c);
test2();
throw new RuntimeException();
}
@TransactionAttribute(TransactionAttributeTpe.REQUIRES_NEW)
public void test2() {
Customer c1 = new Customer();
c1.setNome("Irina");
em.persist(c1);
}
Eu nĂŁo entendi o que vem ser 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.
Você está aprendendo português?
Anotou seu sessioBean?
@TransactionManagement(TransactionManagementType.CONTAINER)
Oi. Anotei!
REQUIRED_NEW deveria ser uma nova transaction e teria que ter COMMIT OK!
e ter ROLLBACK na REQUIRED. Certo?
O required_new sempre vai criar uma nova trnsação, mesmo que o método em execução tenha sido chamado em contexto transacional.
OK, mas o persist no test2() nao ocorre commit! É isso que nao consigo enterder!
Esta ocorrendo ROLLBACK nos test1() e test2().
Se persistiu no banco de dados Ă© porque salvou.
Como você que não está havendo commit??
Nao esta persistindo nada! 
Como está o arquivo persistence.xml?
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…
[quote=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…[/quote]
vocĂŞ quis dizer apagar?
Prezada, pelo que eu entendi, ao lançar uma RuntimeException nada é persistido, ok?
Onde está o erro nisso?
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… 
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!
I’m reading this: http://download.oracle.com/javaee/5/tutorial/doc/bncij.html
But the REQUIRES_NEW doesn’t work that way with me! 
HELP ME PLEASE!!! 
[quote=natasha_sch]I’m reading this: http://download.oracle.com/javaee/5/tutorial/doc/bncij.html
But the REQUIRES_NEW doesn’t work that way with me! 
HELP ME PLEASE!!! 
[/quote]
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
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]
Só mais um detalhe, como está anotado o em: EntityManager?
Privet 
Daniel, e isso mesmo! Em 2 EJBs funcionou 
Acho que EntityManager estava confuse com a TransactionType 
Spasibo! voces sao gentlemen 
[quote=natasha_sch]Privet 
Daniel, e isso mesmo! Em 2 EJBs funcionou 
Acho que EntityManager estava confuse com a TransactionType 
Spasibo! voces sao gentlemen :)[/quote]
whats the meaning of spasibo?
I was wondering the same ^^