Как совместить mongodb-представление с pageable и querydsl? - PullRequest
1 голос
/ 13 марта 2020

Мой случай: просмотр страниц и фильтрация (querydsl) вложенного объекта (ObjectB - не уникально).

Упрощение структура данных:

@Document(collection= "ObjectA")
class ObjectA {

  String id;
  List<ObjectB> list;

 }

class ObjectB {

  String name;
}

Я не могу использовать @ DBRef из-за других деловых решений. Я пытаюсь создать другую коллекцию stati c с именем ObjectBView и обновить ее с помощью MongoListener. К сожалению, это решение вызывает много дополнительного кода и оглушает процесс.

  @Document(collection= "ObjectBView")
    class ObjectBView {

      String objectAId;
      String name;

     }

Интересно, как использовать MongoDB View (не материализованный) для создания ObjectBView. Я обнаружил, что это возможно динамически c способом, используя MongoDatabase.createView() и страницы запросов ( mongoTemplate и PageableExecutionUtils ). К сожалению, я не могу найти способ объединить его с QueryDSL для фильтрации данных (в настоящее время используется в проекте). Для QUeryDSL требуется репозиторий stati c, расширенный на QuerydslPredicateExecutor<T>.

. Есть ли какое-либо решение для создания ObjectBView, автоматического обновления свойств с ObjectA и ObjectB и обеспечения возможности его постраничного вывода, а также фильтрации (QueryDSL)

...