Java GraphQL 注释:指定列表字段
Posted
技术标签:
【中文标题】Java GraphQL 注释:指定列表字段【英文标题】:Java GraphQL Annotations: Specify List Field 【发布时间】:2017-06-29 16:14:13 【问题描述】:如何在 java-graphql-annotations 框架中指定列表字段? 不幸的是,我找不到任何关于指定列表字段的documentation。
此示例产生错误:
// 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]
...
【问题讨论】:
【参考方案1】:好吧,您要么创建一个返回列表的 dataFetcher 类,并将其绑定到字段上方带有 @GraphQLDataFetcher(FetcherClass.class)
注释的字段(然后永远不会调用该方法,因此您可以返回 null),或者您可以返回在方法本身中列出。
顺便说一句 - 我认为它不能使用通配符,你必须指定一个类型
【讨论】:
【参考方案2】:该方法必须返回 List 的类型:
...
@GraphQLField
public List<Object> getList()
return myValue;
...
【讨论】:
以上是关于Java GraphQL 注释:指定列表字段的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL - 如何防止计算请求中未指定的资源中的字段?
使用 Flask-graphql 返回 Result 字段列表
Graphql Java hello world:向父模式添加子模式失败
GraphQL 模式拼接选择集中是不是禁止使用列表类型的字段?