Как объединить представление mongodb со страницей и querydsl?

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

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

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

  String id;
  List<ObjectB> list;

 }

class ObjectB {

  String name;
}

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

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

      String objectAId;
      String name;

     }

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

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


person Xalion    schedule 13.03.2020    source источник