Мой случай: перелистывание и фильтрация (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)?