Graphql - 查询返回 null

Posted

技术标签:

【中文标题】Graphql - 查询返回 null【英文标题】:Graphql - Query returns null 【发布时间】:2020-01-07 04:34:57 【问题描述】:

我正在使用 java 的 graphql-java-annotations 库从我的 spring 后端检索数据。

<dependency>
     <groupId>io.github.graphql-java</groupId>
      <artifactId>graphql-java-annotations</artifactId>
      <version>7.1</version>
</dependency>

当我调用查询时,它总是返回 null。

这是我的 Provider 类:

GraphQLAnnotations graphqlAnnotations = new GraphQLAnnotations();
GraphQLSchema graphQLSchema = newSchema()
            .query(graphqlAnnotations.object(QueryTest.class))
            .build();
this.graphQL = GraphQL.newGraphQL(graphQLSchema).build();

这是查询:

@GraphQLName("queryTest")
public class QueryTest 

    @GraphQLField
    public static Test byId(final DataFetchingEnvironment env,         @GraphQLName("id") Long id) 
        return new Test();
    

最后是 Test.class

@GraphQLName("Test")
public class Test 

    private String id;
    private String name;

    public Test() 
        this("0");
    

    public Test(String id) 
        this.setName("Name" + id);
        this.setId(id);
    

    @GraphQLField
    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    @GraphQLField
    public String getId() 
        return id;
   

    public void setId(String id) 
        this.id = id;
    

这是我的电话:

 
   "query" : "query queryTest  byId(id: 2)  getId  ",
   "operationName" : "queryTest"
  

这是我得到的结果:


  "data": 
    "byId": null
  

我调试了 graphql 执行,发现 schema 包含 TestClass 和 Test。所以类型和查询是已知的。使用此配置,我没有提取器或解析器。

【问题讨论】:

【参考方案1】:

找到解决方案:

为了通过 AnnotationsSchemaCreator Builder 正确创建架构,我必须更改我的 Provider 类:

GraphQLSchema graphQLSchema = AnnotationsSchemaCreator.newAnnotationsSchema()
            .query(QueryTest.class)
            .typeFunction(new ZonedDateTimeFunction())
            .build();

this.graphQL = GraphQL.newGraphQL(graphQLSchema).build();

【讨论】:

以上是关于Graphql - 查询返回 null的主要内容,如果未能解决你的问题,请参考以下文章

为啥 GraphQL 查询返回 null?

为啥 GraphQL 查询返回 null?

Graphql - 查询返回 null

在短 GraphQL 查询上返回 null

Graphql 查询总是返回 null

为啥我的 graphql 嵌套查询返回 null?