首页 > 解决方案 > 如何将mongodb视图与pageable和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 结合起来过滤数据的方法(目前在项目中使用)。QUEyDSL 需要静态存储库扩展QuerydslPredicateExecutor<T>.

是否有任何解决方案可以创建ObjectBView、自动更新属性ObjectAObjectB使其可分页以及过滤(QueryDSL)?

标签: javamongodbquerydslpageable

解决方案


推荐阅读