Не удается сохранить файл после обновления до драйвера Mongo Java 3.11 - PullRequest
0 голосов
/ 24 октября 2019

Обновление до драйвера Mongo Java 3.11.

Старый код был таким:

Класс A:

    List<GridFSDBFile> files = this.findFile(queryFile);

    for (GridFSDBFile file : OrionCollectionUtils.emptyIfNull(files)) {
        DBObject metaData = file.getMetaData();
        metaData.put(LAST_MODIFIED_DATE, date);
        file.setMetaData(metaData);
        **file.save();**
    }

Класс B:

public List<GridFSDBFile> findFile(Query query) {
    return this.gridFsTemplate.find(query);
}

gridFstemplate.find (), используемый для возврата списка.

Теперь он возвращает GridFSFindIterable.

Вот как выглядит новый код, который я пытаюсь выполнить:

Класс A:

    GridFSFindIterable gridFSFindIterable = this.findFile(query);

    MongoCursor<GridFSFile> iterator = gridFSFindIterable.iterator();

    while (iterator.hasNext())
    {
        GridFSFile gridFSFile = iterator.next();
        Document document = gridFSFile.getMetadata();
        document.put(LAST_MODIFIED_DATE, date);

    }

Класс B:

public GridFSFindIterable findFile(Query query) {
    return this.gridFsTemplate.find(query);
}

Проблема в том, что новый возвращаемый класс GridFSFindIterable больше не имеет метода сохранения.

Он имеет итератор com.mongodb.client.gridfs.model.GridFSFile (обратите внимание на имя пакета).

Старый gridFsTemplate.find () возвратил List. Этот файл GridFSDBFile расширяет com.mongodb.gridfs.GridFSFile (другое имя пакета).

В драйвере Mongo Java есть два GridFSFile.

Итак, подытожим, старая функция gridFsTemplate.find () вернуласьсписок GridFSDBFile, у которого был метод сохранения.

Новый gridFsTemplate.find () возвращает GridFSFindIterable, который имеет итератор GridFSFile, но этот GridFSFile, даже если он имеет то же имя класса, что и другое имя класса. , не имеет метода сохранения init.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...