Ordem de execução de métodos

2 respostas
romulosb

Estou fazendo um crud comum, porém o médoto de excluir não está seguindo a ordem de execução.
Primeiro eu quero que o método exclua o registro e depois que liste todos.
Segue o código:

public void excluir() {
        clienteJuridico = clienteDAO.buscaPorId(clienteJuridico.getId());
        List<EnderecoPessoa> ep = enderecoDAO.buscaPelaPessoa(clienteJuridico.getPessoa());
        for (EnderecoPessoa enderecoPessoa : ep) {
            enderecoDAO.remove(enderecoPessoa);
        }
        List<Contato> cp = contatoDAO.buscaPelaPessoa(clienteJuridico.getPessoa());
        for (Contato contato : cp) {
            contatoDAO.remove(contato);
        }
        clienteDAO.remove(clienteJuridico);
        listaClientesJuridicos = clienteDAO.listaTodosClientesPJ();
    }

Primeiro ele executa listaClientesJuridicos = clienteDAO.listaTodosClientesPJ(); e só na hora de comitar a transação que ele executa o remove. Segue o Interceptor:

@Transactional
@Interceptor
public class TransactionInterceptor implements Serializable {

    @Inject
    private EntityManager em;

    @AroundInvoke
    public Object intercept(InvocationContext ctx) throws Exception {
        //System.out.println("Abrindo a transação");
        em.getTransaction().begin();

        // Passando para o JSF tratar a requisição e pegando o retorno da lógica
        Object resultado = ctx.proceed();

        em.getTransaction().commit();
        //System.out.println("Commitando a transação");
        return resultado;
    }
}

Agradeço desde já.

2 Respostas

wspinheiro

Poxa seu código tá bem identadinho, mas porque vc não pode fazer assim, dois métodos:
excui() e listaTudo();
ENTÃO vc executa o exclui que faz a consulta por codigo e exclui o objeto e depois, DEPOIS executa o listaTudo() que já nao vai ter o registro excluido para apresentar :lol:

Abraço!

romulosb

Valew pela atenção!
Consegui resolver dando um flush no médoto de remover do DAO. Porém ainda não entendi muito bem como esse flush funciona.
Alguem ai sabe?

Criado 2 de agosto de 2011
Ultima resposta 3 de ago. de 2011
Respostas 2
Participantes 2