Spring boot GraphQL SPQR获取服务器端的所有字段

Spring boot GraphQL SPQR获取服务器端的所有字段,spring-boot,graphql,graphql-java,graphql-spqr,Spring Boot,Graphql,Graphql Java,Graphql Spqr,我是SpringBoot新手,我刚刚开始使用GraphqlSPQR进行SpringBoot,因为它允许轻松地引导Java项目 然而,据我所知,GraphQL基本上允许从数据库中获取所选字段。根据示例,我已经看到,graphql spqr库中的这种类型的选择发生在客户端。有没有一种方法可以同时选择客户端和服务器端以加快查询速度 我已经研究了GraphQL的EntityGraph Exmaple,但它们主要是为涉及连接的复杂静默实现的。但是,对于像findAll()、findById()等这样的简单

我是SpringBoot新手,我刚刚开始使用GraphqlSPQR进行SpringBoot,因为它允许轻松地引导Java项目

然而,据我所知,GraphQL基本上允许从数据库中获取所选字段。根据示例,我已经看到,graphql spqr库中的这种类型的选择发生在客户端。有没有一种方法可以同时选择客户端和服务器端以加快查询速度

我已经研究了GraphQL的EntityGraph Exmaple,但它们主要是为涉及连接的复杂静默实现的。但是,对于像findAll()、findById()等这样的简单查询,不存在任何内容


我想在服务器上使用findAll()只获取客户机请求的字段。我该怎么做呢?

评论中所说的是正确的:GraphQL(因此SPQR,因为它只是一个连接模式的工具)不知道SQL、数据库、连接或其他任何信息。这是一个通讯协议,其余的由你决定。 至于您的情况,您必须将子选择注入解析器并将其传递给SQL。在最简单的情况下,它可以如下所示(在伪代码中):

公共列表簿(@graphql环境集合字段){
//进一步传递请求的字段名
返回database.query(“从book中选择“+字段+”);
}

可以使用相同的注释注入<代码> Debug环境> /Cord>,如果需要完整的上下文。

实现完全保留在您的身上,graphql只是前端和后端之间的通信协议,将其视为一种REST端点,它允许您创建不同类型的端点,但是每个端点是如何更新的,这取决于您对解决方案的了解,您可能必须将列向下传递到sql级别&可能必须执行:从表中选择,等等。在您的实现中,我认为没有一个库可以为您做到这一点,从代码层到数据库层。你可以看看Hasura,但我不确定它是否符合你的规格:)明白。有没有一种方法可以根据GraphQL客户机请求字段生成SQL的动态查询?我认为一个名为hasura的工具可能会有所帮助,但我只读过关于它的文章,我自己从未尝试过。。。你可以看看
public List<Book> books(@GraphQLEnvironment Set<String> fields) {
    //pass the requested field names further
    return database.query("SELECT " + fields + " FROM book");
}