@Override
    public ProvaDidatica alterar(IEntidade entidade) throws SQLException {

        Connection connection = ConnectionFactory.getConnection();
        ProvaDidatica provaDidatica = (ProvaDidatica) entidade;

        String sql_Altera = "DELETE FROM candidato_aptos_prova_didatica WHERE id_prova_didatica=?";
        PreparedStatement stmtAletrar = connection.prepareStatement(sql_Altera);
        stmtAletrar.setInt(1, provaDidatica.getIdProvaDidatica());
        stmtAletrar.executeUpdate();

        if (!provaDidatica.getCandidatosAptosProvaDidatica().isEmpty()) {

            ArrayList<Candidato> listaAptos = provaDidatica.getCandidatosAptosProvaDidatica();
            Iterator<Candidato> iterator = listaAptos.iterator();

            while (iterator.hasNext()) {

                Candidato objCandidato = iterator.next();
                String sql_InsereApatos = "INSERT INTO candidato_aptos_prova_didatica (id_prova_didatica, id_candidato) values (?,?)";
                PreparedStatement statement = connection.prepareStatement(sql_InsereApatos, Statement.RETURN_GENERATED_KEYS);
                statement.setInt(1, provaDidatica.getIdProvaDidatica());
                statement.setInt(2, objCandidato.getIdCandidato());
                statement.executeUpdate();
            }
        }

        String sql_DeletaAptos = "DELETE FROM candidato_aptos_prova_didatica WHERE id_prova_didatica = ?";
        PreparedStatement statement2 = connection.prepareStatement(sql_DeletaAptos);
        statement2.setInt(1, provaDidatica.getIdProvaDidatica());
        statement2.executeUpdate();

        if (!provaDidatica.getCandidatosAptosProvaDidatica().isEmpty()) {

            ArrayList<Candidato> listaAptos = provaDidatica.getCandidatosAptosProvaDidatica();
            Iterator<Candidato> iterator = listaAptos.iterator();
            /*remove todos os candidadtos aptos*/

            while (iterator.hasNext()) {

                Candidato obj_Candidato = iterator.next();
                String sql_Insere = "INSERT INTO candidato_aptos_prova_didatica (id_prova_didatica, id_candidato) values (?,?)";

                PreparedStatement stmt5 = connection.prepareStatement(sql_Insere, Statement.RETURN_GENERATED_KEYS);
                stmt5.setInt(1, provaDidatica.getIdProvaDidatica());
                stmt5.setInt(2, obj_Candidato.getIdCandidato());
                stmt5.executeUpdate();
            }
        }

        String sql_Update = "UPDATE prova_didatica SET id_prova_didatica = ?, id_concurso = ?, local = ?";

        PreparedStatement stmt6 = connection.prepareStatement(sql_Update);
        this.setInt(stmt6, 1, provaDidatica.getIdProvaDidatica());
        this.setInt(stmt6, 2, provaDidatica.getConcurso().getIdConcurso());
        stmt6.setString(3, provaDidatica.getLocalRealizacaoProvaDidatica());

        System.out.println(stmt6.toString());
        if (stmt6.executeUpdate() == 1) {

            return provaDidatica;
        }
        return null;
    }