当前位置: 首页 > 知识库问答 >
问题:

GraphQL Java:使用@Batched DataFetcher

韩喜
2023-03-14
public class MyDataFetcher implements DataFetcher {
  ...

  @Override
  public Object get(DataFetchingEnvironment environment) {
    return myService.getData();
  }
}
///// Where to put this code?
List list = myService.getData();
/////

public class MyDataFetcher implements DataFetcher {

  @Batched
  public Object get(DataFetchingEnvironment environment) {
    return list.get(environment.getIndex()); // where to get the index?
  }
}

共有1个答案

凌博实
2023-03-14

警告:原始BatchedExecutionStrategy已被弃用,并将被删除。当前首选的解决方案是数据加载器库。此外,整个执行引擎将在未来被替换,新的引擎将再次“原生地”支持批处理。您已经可以使用新引擎和新的BatchedExecutionStrategy(都在NextGen包中),但它们对检测的支持有限。下面的答案同样适用于legacy和nextgen执行引擎。

这样看。正常的datafetchers接收单个对象作为源(datafetchingenvironment#getsource),并返回单个对象作为结果。例如,如果查询如下:

{
   user (name: "John") {
       company {
           revenue
       }
}

您的company解析器(fetcher)将获得一个user对象作为源,并期望基于该对象返回一个company

User owner = (User) environment.getSource();
Company company = companyService.findByOwner(owner);
return company;
List<User> owners = (List<User>) environment.getSource();
List<Company> companies = companyService.findByOwners(owners);
return companies;
 类似资料:
  • 我需要从我的Spring Boot应用程序中调用GraphQL API(Shopify Storefront API),但我找不到任何描述我可以使用哪些库的源代码。你们能推荐图书馆吗?或者有人能描述一下我如何为我的Spring Boot应用程序安装Apollo客户端,并从我的Spring Boot应用程序运行查询/转换到Shopify。谢谢你的帮助。

  • 我正在构建图形ql-javaSpring引导应用程序。假设我有这个模式: 在BE上,我使用的是JOOQ pojos。 当前,所有的foo都被提取,然后对于每个foo,所有的条都通过另一个查询提取。我想通过一个查询来实现这一点: 你知道如何做到这一点吗?我是一个真正的GraphQL新手。 技术堆栈:Spring Boot JOOQ graphql java graphql java工具

  • 我希望有人经历过类似的事情,并能帮助我: 我正在使用graphql java(以及spring、graphql java工具等)和hibernate,我遇到了一个奇怪的问题: 每当我执行查询(或变异)并通过Hibernate加载实体时,它都会自动延迟加载关系。我可以在Hibernates查询日志中看到这一点。 即使我不在查询中加载字段,甚至从模式中删除字段,也会发生这种情况。 例如,给定以下模式:

  • 我能够启动Spring Boot GraphQL Java Server(GraphQL作为运行查询的用户界面)。现在,我试图将查询字符串从GraphiQL(实际上是有效负载中发送到/graphqlendpoint的查询)传递到查询解析器类中。我尝试了不同的选择,但没有任何帮助。

  • 有没有办法在使用 jongo 查询 MongoDB 时添加 ?我发现这样的错误 - '排序超出了 104857600 字节的内存限制,但没有选择加入外部排序。正在中止操作。传递 allowDiskUse:true 可以选择加入,可以通过以下方式阻止,您的聚合看起来像 但据我所知,Jongo 中的类仅将管道应用于自身,然后您可以使用 方法执行。 是否有任何方法可以将该参数传递给mongo而不从Jon

  • 问题内容: 我在远程服务器上有一个管理Web应用程序。该应用程序是使用MEAN堆栈编写的,我列出了连接到Web应用程序所需的所有RESTful路由。 我正在编写一个Java客户端应用程序,该应用程序需要从该管理应用程序发送和接收数据。如果我具有服务器的IP地址和REST路由,如何将客户端连接到Web应用程序? 我想我需要提供到服务器和REST API文件的URL连接,然后仅调用诸如和的路由功能。

  • 问题内容: 我使用spring数据和方法来获取模型。调用此方法时如何使用查询提示? 上面的源代码工作正常,但是我不能为我的JPA提供程序(在我的情况下为EclipseLink)设置QueryHint。 以上是我使用spring-data使用查询提示的方式, 我还发现了这个尚未解决的问题。 问题答案: 当我想使用spring-data创建查询时,请遵循上述算法。 1)是否已经提供的查询 通过弹簧数据

  • 我使用spring数据和方法获取模型。调用此方法时如何使用查询提示 上面的源代码运行良好,但我无法为我的JPA提供者(在我的例子中是EclipseLink)设置QueryHint。 我使用spring数据使用查询提示的方式如下:, 我也发现这个还没有解决。