Morphia, MongoDB, Q классы и выполнение обновлений - PullRequest
0 голосов
/ 07 июня 2019

У меня большой проект Spring Boot, использующий MongoDB. Большая часть работы выполняется с использованием классов репозитория Spring Data. Это здорово. Но иногда я хочу сделать что-то, что не легко поддерживается интерфейсами репозитория Spring Data. В этом случае я использую RepositoryCutomInterface для добавления дополнительных методов. Это все хорошо. Прямо сейчас я использую объект MongoOperations, автоматически подключенный к RepositoryCustomInterface. С этим объектом MongoOperations я могу идти дальше и делать все, что захочу.

Однако я действительно хотел бы использовать Morphia из-за его безопасности типов и других преимуществ. Я настроил это в своем проекте, и он генерирует классы Q и создает Datastore и Morphia для меня. Я успешно использую их в своем RepositoryCustomInterface для выполнения различных запросов.

Я пытаюсь выяснить, как выполнять обновления. Я подробно прочитал документацию по Morphia, и в разделе о MongoDB ничего не говорится о выполнении обновлений.

Например, я хотел бы сделать:

final QImageCapture imageCapture = 
    new QImageCapture("imageCapture");
final MorphiaQuery<ImageCapture> query =
   new MorphiaQuery<>(morphia,datastore,imageCapture);
query.where(imageCapture.id.in(ids)).
   set(imageCapture.deleted, TRUE);

Но это не правильный код. Метод set () хочет ParamExpression, а imageCapture.deleted - BooleanPath.

Я вижу, что могу создать UpdateOperations из хранилища данных. Однако, похоже, что не используются классы Q.

Я искал везде и не могу найти пример, и мне интересно, возможно ли это или нет. Любые предложения приветствуются.

...