2017-02-11 167 views
0

如何在java-graphql-annotations框架中指定列表字段? 不幸的是,我找不到任何有关指定列表字段的documentationJava GraphQL注解:指定列表字段

这个例子会产生一个错误:

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

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

异常堆栈跟踪:

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] 
... 

回答

0

方法必须返回一个类型的列表:

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

好了,你可以创建一个dataFetcher类,返回列表并将其绑定到字段,其中@GraphQLDataFetcher(FetcherClass.class)注释位于f (然后该方法从不调用,所以你可以返回null),或者你可以返回方法本身的列表。

顺便说一句 - 我不认为它可以与通配符一起使用,您必须指定一个类型