2014-09-05 3 views
0

Я пытаюсь удалить файл на GridFs, но даже если я не получу никакой ошибки, ничего не происходит.Удаление файла на GridFS с помощью GrifFsTemplate.delete

Query query = new Query (Criteria.where("filename").is(filename)); 

this.gridFsTemplate.delete(query); 

Любая идея о том, как это сделать? Может быть, лучший и безопасный способ удаления файла, возможно, с помощью ids?

Спасибо. Alexio

ответ

0

Я думаю, проблема в том, что ваш запрос ничего не извлекает. GridFS работает не с одной коллекцией, а с двумя, поэтому мы, возможно, не сможем использовать методы where() из класса Criteria, как обычно.

Я выкопал в весеннюю документацию и обнаружил, что он удобно предлагает класс GridFsCriteria, предоставляющий статические методы, особенно для создания таких запросов, как ваш. Впоследствии правильный ответ на ваш вопрос должен быть:

Query query = new Query(GridFsCriteria.whereFileName().is(filename)); 
this.gridFsTemplate.delete(query); 

Надеюсь, это поможет! Вы можете найти документацию по поддержке Spring GridFS here.

+0

Но как отличается ваш путь от моего? Я создаю экземпляр объекта запроса, передающего критерии в конструкторе (это возможность), и вы добавляете критерии к объекту запроса на втором шаге. –

+0

Вы ** абсолютно ** правый. Чтобы внести поправки в этот бесполезный ответ, вот правильный запрос, используя класс помощника «GridFsCriteria»! – afraisse

Смежные вопросы