Java GraphQL批注:指定列表字段

时间:2017-02-11 09:16:51

标签: graphql graphql-java

如何在java-graphql-annotations框架中指定List Field? 很遗憾,我找不到关于指定列表字段的任何documentation

此示例产生错误:

// Bean class
public class MyBean {    
  @GraphQLField
  public List<?> getList() {
    return null;
  }      
}

// instantiate object type
GraphQLAnnotations.object(MyBean.class);

异常Stacktrace:

java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.WildcardTypeImpl cannot be cast to java.lang.Class
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:133) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction$ListFunction.apply(DefaultTypeFunction.java:120) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:304) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.DefaultTypeFunction.apply(DefaultTypeFunction.java:37) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getField(GraphQLAnnotations.java:391) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObjectBuilder(GraphQLAnnotations.java:208) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.getObject(GraphQLAnnotations.java:167) ~[graphql-java-annotations-0.13.1.jar:na]
at graphql.annotations.GraphQLAnnotations.object(GraphQLAnnotations.java:173) ~[graphql-java-annotations-0.13.1.jar:na]
...

2 个答案:

答案 0 :(得分:0)

该方法必须返回List for List:

...
@GraphQLField
public List<Object> getList() {
  return myValue;
}
...

答案 1 :(得分:0)

好吧,您要么创建一个返回列表的dataFetcher类,并将其绑定到字段上方带有@GraphQLDataFetcher(FetcherClass.class)注释的字段(然后该方法永远不会被调用,因此您可以返回null),或者您可以返回方法本身的列表。

顺便说一下 - 我认为它不能用于通配符,你必须指定一个类型