首页 > 解决方案 > Spring数据/QueryDSL多组通过保存分页

问题描述

我正面临这个问题:

假设我们有 3 个实体(为简单起见,省略了 spring 数据/休眠注释)

Class A {
  long id;
  
  B classB;

  C classC;

  ... other fields omitted for simplicity ...
}

Class B {
  long id;
  
  List<A> childrenA;


  ... other fields omitted for simplicity ...
}

Class C {
  long id;
  
  List<A> childrenA;

  ... other fields omitted for simplicity ...
}

我想要实现的是构建某种“网格”,用户可以在其中按 B 或 C 类查看/过滤和排序聚合结果。主要的“决定”是这样做出的:如果 A 记录有 B 父级,则按 B 分组。如果没有,则按 C 分组, 这就是主要问题。我想我必须使用 QueryDSL 而不是 spring-data 因为可能会有动态过滤和排序。另一件重要的事情是我想对结果进行分页。所以我假设我必须选择 XA 行,然后将它们组合在一起。这将打破分页(例如,因为我选择了一页的 50 个项目并将它们分组为 10 个分组项目,这不是正确的数量)。这可以通过 Spring-data-jpa 或 QueryDSL 解决吗?要这样分组,返回项目的确切页面大小并返回某种 dto 或其他东西?我真的很想避免使用 QueryDSL SQL 版本。

要更多地了解业务案例:假设您正在销售商品。并且您需要某种网格,您希望按此顺序对订单中的项目进行分组(因此,如果订单 B 有 10 个项目 A,我必须选择 D 来保存有关 B 的数据和这 10 个 A 项目的列表)。例如,我想按仓库分组的其他记录。所以剩下的记录应该按链接的C仓库分组(以防它们没有链接到任何B订单)

标签: javahibernatespring-datahqlquerydsl

解决方案


推荐阅读