如何限制spring-data中关系中列表中的结果数

时间:2015-11-20 23:21:52

标签: hibernate jpa spring-boot spring-data named-query

我正在研究Spring Data,我对查询有疑问。

我有两个实体之间的关系:

@Entity
public class A {
   //other fields
   List<B> counter;
   //getters and setters
}

@Entity
public class B {
  //other fields
  Long count;
  //getters and setters
}

现在,在我的A类存储库中,我想得到A的所有对象。对于这些对象中的每一个,我想只获得由“count”asc字段排序的B类中的前五个对象或内容描述

我该怎么办?我发现的“前5个元素”或“前5个元素”的例子只对实体A的元素有用,而不是对B有用。

任何帮助将不胜感激。提前谢谢!

更新 也许也可以使用命名查询。如果有人知道如何遵循这种方式并且可以提供帮助,我会很感激。感谢。

1 个答案:

答案 0 :(得分:0)

我没有测试过这个。我希望这适合你。 @BatchSize 可用于定义批量加载集合或延迟实体的大小。

@Entity
public class A {
   //other fields
   @Fetch(FetchMode.SELECT)
   @BatchSize(size = 10)
   List<B> counter;
   //getters and setters
}

@Entity
public class B {
  //other fields
  Long count;
  //getters and setters
}

提取策略

有四种提取策略

  1. fetch-“join”=禁用延迟加载,始终加载所有集合和实体。
  2. fetch-“select”(默认)=延迟加载所有集合和实体。
  3. batch-size =“N”=获取“N”个集合或实体,不记录
  4. fetch-“subselect”=将其集合分组为子选择语句。
  5. batch-size =“10”或@BatchSize(size = 10) 批量大小提取策略未定义加载集合内部的记录数。相反,它定义了应该加载多少个集合。

    请找到链接:http://www.mkyong.com/hibernate/hibernate-fetching-strategies-examples/