Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Falha com RollBack

Boa tarde Pessoal!!

Ppodriam me ajudar com o Rolback da aula 5? ele retorna a exception certinha mas o banco eh atualizado e a interface web tbm!!

Vejam anotacoes "conforme aula 4" e "... aula 5".

Muito grato pela ajuda!!

package br.com.caelum.livraria.dao;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.UserTransaction;

import br.com.caelum.livraria.modelo.Autor;

@Stateless
@TransactionManagement(TransactionManagementType.BEAN) // opcional * Conforme aula 4
public class AutorDao {

    @PersistenceContext
    private EntityManager manager;

    @Inject UserTransaction tx;

    @PostConstruct
    void aposCriacao() {
        System.out.println("[INFO] AutorDao foi criado.");
    }

    //@TransactionAttribute(TransactionAttributeType.REQUIRED) - // conforme aula 4
    public void salva(Autor autor) {

        System.out.println("salvando autor " + autor.getNome());

        try {
            tx.begin();
            manager.persist(autor);
            tx.commit();
        }catch(Exception e) {
            e.printStackTrace();
        }

        System.out.println("salvou autor " + autor.getNome());
    }

    public List<Autor> todosAutores() {
        return manager.createQuery("select a from Autor a", Autor.class).getResultList();

    }

    public Autor buscaPelaId(Integer autorId) {
        Autor autor = this.manager.find(Autor.class, autorId);
        return autor;
    }

}

,

package br.com.caelum.livraria.bean;

import javax.ejb.ApplicationException;

@ApplicationException(rollback=true)
public class LivrariaException extends RuntimeException {


}
```,
```package br.com.caelum.livraria.bean;

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;

import br.com.caelum.livraria.dao.AutorDao;
import br.com.caelum.livraria.modelo.Autor;

@Stateless
public class AutorService {

    @Inject 
    AutorDao dao;

    //required
    public void adiciona(Autor autor)  {
        //maisregras aqui
        dao.salva(autor);

        //uma regra de negovio deu errada *simulacao

        throw new LivrariaException(); // conforme aula 5

    }

    public List<Autor> todosAutores() {
        // TODO Auto-generated method stub
        return dao.todosAutores();
    }
}
1 resposta
solução!

Estranho... Na aula 4 incluimos os codigos

//    @Inject 
//    UserTransaction tx;   //aula5

...

//        try {                            //aula5
//            tx.begin();
//            manager.persist(autor);    
//            tx.commit();
//        }catch(Exception e) {
//            e.printStackTrace();
//        }

na aula 5 nao tem mais ???

na aula 4

@TransactionManagement(TransactionManagementType.CONTAINER) // opcional
...
@TransactionAttribute(TransactionAttributeType.REQUIRED)

na aula 5 mudou tudo????

Que bagunca!!!

Mostra a mudanca e EXPLICA !!!