Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何限制spring数据中关系中列表中的结果数_Hibernate_Jpa_Spring Boot_Spring Data_Named Query - Fatal编程技术网

Hibernate 如何限制spring数据中关系中列表中的结果数

Hibernate 如何限制spring数据中关系中列表中的结果数,hibernate,jpa,spring-boot,spring-data,named-query,Hibernate,Jpa,Spring Boot,Spring Data,Named Query,我正在研究Spring数据,我有一个关于查询的问题 我在两个实体之间有关系: @Entity public class A { //other fields List<B> counter; //getters and setters } @Entity public class B { //other fields Long count; //getters and setters } @实体 公共A类{ //其他领域 列表计数器; //接球手和接

我正在研究Spring数据,我有一个关于查询的问题

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

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

@Entity
public class B {
  //other fields
  Long count;
  //getters and setters
}
@实体
公共A类{
//其他领域
列表计数器;
//接球手和接球手
}
@实体
公共B级{
//其他领域
长计数;
//接球手和接球手
}
现在,在我的A类存储库中,我想获取A的所有对象。对于这些对象中的每一个,我只想获取B类中按字段“count”asc或desc排序的前五个对象

我怎么做?我发现的“前5个元素”或“前5个元素”的示例只对实体A的元素有用,而对实体B的元素没有用处

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

更新
也许也可以使用命名查询。如果有人知道如何走这条路并能提供帮助,我将不胜感激。谢谢。

我没有测试这个。我希望这对你有用。 @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
}
@实体
公共A类{
//其他领域
@Fetch(FetchMode.SELECT)
@批量大小(大小=10)
列表计数器;
//接球手和接球手
}
@实体
公共B级{
//其他领域
长计数;
//接球手和接球手
}
获取策略

有四种抓取策略

  • fetch—“join”=禁用延迟加载,始终加载所有集合和实体
  • fetch-“select”(默认)=延迟加载所有集合和实体
  • batch size=“N”=最多提取“N”个集合或实体,而不是记录
  • fetch—“subselect”=将其集合分组到sub select语句中
  • batch size=“10”或@BatchSize(size=10) 批量大小获取策略不定义集合中加载了多少记录。相反,它定义了应该加载多少集合


    请找到链接:

    我没有测试这个。我希望这对你有用。 @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
    }
    
    @实体
    公共A类{
    //其他领域
    @Fetch(FetchMode.SELECT)
    @批量大小(大小=10)
    列表计数器;
    //接球手和接球手
    }
    @实体
    公共B级{
    //其他领域
    长计数;
    //接球手和接球手
    }
    
    获取策略

    有四种抓取策略

  • fetch—“join”=禁用延迟加载,始终加载所有集合和实体
  • fetch-“select”(默认)=延迟加载所有集合和实体
  • batch size=“N”=最多提取“N”个集合或实体,而不是记录
  • fetch—“subselect”=将其集合分组到sub select语句中
  • batch size=“10”或@BatchSize(size=10) 批量大小获取策略不定义集合中加载了多少记录。相反,它定义了应该加载多少集合


    请找到链接:

    不幸的是,它没有工作。我认为应该在A级仓库里完成,你知道吗?不使用findAll()方法,也许有某种方法可以过滤我想要的特定列表的结果数量。但无论如何,谢谢你的回复。不幸的是,它没有起作用。我认为应该在A级仓库里完成,你知道吗?不使用findAll()方法,也许有某种方法可以过滤我想要的特定列表的结果数量。但无论如何,谢谢你的回复。