private Collection<T> criaInstancias(ResultSet result) throws SQLException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException {
        ArrayList<T> instancias = new ArrayList<>();
        result.first();
        do {
            Constructor constructor = null;
            try {
                constructor = classe.getConstructor();
                constructor.setAccessible(true);
            } catch (NoSuchMethodException e) {
                char primeiro = Character.toUpperCase(nomeEntidade.charAt(0));
                throw new RuntimeException("Construtor padrão " + primeiro
                        + nomeEntidade.substring(1) + "() não está presente");
            }
            T object = (T) constructor.newInstance();

            for (Field campo : campos) {
                campo.setAccessible(true);
                switch (campo.getType().getSimpleName().toLowerCase()) {
                    case "long":
                        campo.set(object, result.getLong(apoio.getNomeCampo(campo)));
                        break;
                    case "string":
                        campo.set(object, result.getString(apoio.getNomeCampo(campo)));
                        break;
                    case "int":
                        campo.set(object, result.getInt(apoio.getNomeCampo(campo)));
                        break;
                    case "double":
                        campo.set(object, result.getDouble(apoio.getNomeCampo(campo)));
                        break;
                    case "float":
                        campo.set(object, result.getFloat(apoio.getNomeCampo(campo)));
                        break;
                    case "char":
                        campo.set(object, result.getString(apoio.getNomeCampo(campo)).charAt(0));
                        break;
                }
            }
            instancias.add(object);
        } while (result.next());

        return instancias;
    }