private ArrayList<Object> execute(String sql, java.lang.Class entity) {
        ArrayList<Object> objects = new ArrayList<Object>();
        try {
            ResultSet resultSet = dbConnection.getStatement().executeQuery(sql);
            while (resultSet.next()) {
                Object rowObject = Class.forName(entity.getCanonicalName()).newInstance();
                for (java.lang.reflect.Field field : rowObject.getClass().getFields()) {
                    // Add fields to cache
                    fillFieldByType(field, resultSet, rowObject, field.getType().toString());
                }
                objects.add(rowObject);
            }
            resultSet.close();
            return objects;
        } catch (SQLException e) {
            log(e.getMessage(), true);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }