【问题标题】:Datastore: Cannot get more than 1000 keys in a single call数据存储:一次调用中无法获取超过 1000 个密钥
【发布时间】:2021-06-17 08:16:16
【问题描述】:

我正在使用 Spring Boot 和谷歌数据存储。下面是我的主要实体,它引用了其他实体“患者”。

@Entity(name = "depart_list")
public class DepartList {
  @Id private String compositeKey;
  @Reference private List<Patient> patients;
}


@Entity(name = "patient")
public class Patient {
  @Id private String compositeKey;
  private String cid;
  private LocalDate date;

jpa方法:

Page<DepartList> findByCompositeKey(String compositeKey, Pageable pageable);

现在的问题是我在数据存储中只有 1 个结果,但所引用的患者列表值超过了 1000,我不知道如何对其应用限制/页面。这就是为什么我会遇到异常。

com.google.datastore.v1.client.DatastoreException: cannot get more than 1000 keys in a single call, code=INVALID_ARGUMENT

【问题讨论】:

    标签: java spring-boot spring-data-jpa google-cloud-datastore


    【解决方案1】:

    看来您需要将列表分成多个列表。例如

    @LazyReference
    List<Patient> patients0;
    @LazyReference
    List<Patient> patients1;
    

    您可以在以下位置找到解析引用属性的源代码: https://github.com/spring-cloud/spring-cloud-gcp/blob/d969b6c4454d1f49b38e7254bfec4c52d9db9943/spring-cloud-gcp-data-datastore/src/main/java/org/springframework/cloud/gcp/data/datastore/core/DatastoreTemplate.java#L690

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2021-05-18
      • 1970-01-01
      相关资源
      最近更新 更多