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á.