Controlar transação manual após usar método com transação não gerenciada pelo container

0 respostas
javahibernate
E

Tenho um código onde o controle de transação é feita manualmente,
porém o código chama métodos de outros EJB’s da mesma aplicação onde a transação não é controlada manualmente.

Como evitar que minha transação gerenciada manualmente não descarregue os commit quando existir um método que a transação não está sendo gerenciada manualmente.

Quando isso ocorre, minha transação descarrega os commit antes que meu processo realmente esteja concluído.

Exemplo

@TransactionManagement(TransactionManagementType.BEAN)
public class Init() {
    
    @EJB Business business;
     
     private void exe() throws Exception {
         try{
                this.beginTransaction();
                business.processar(); // Exemplo
                this.commit();
            }catch(Exception e){
                rollback();                
            }
           }
}

@Stateless
public class Business() {
    @EJB 
    private DAO dao;

    private void processar() throws Exception {
     // executando processo 1
      this.save();

      // executando processo 2
      this.update();

      // Quando eu executo esse método buscarTeste(), a aplicação descarrega no banco os commit     dos processos anterior

     Teste = dao.buscarTeste(1L);
    
    }
}

@Stateless
public class DAO() {
     public Teste buscarTeste(Long codigo) {
        
        Criteria cri = getSession().createCriteria(Teste.class);
        
        cri.add(Restrictions.eq("codigo", codigo));    

        return (Teste) cri.uniqueResult();
    }
}
Criado 21 de novembro de 2016
Respostas 0
Participantes 1