创建一个 List<A> 作为 GraphQLObjectType
Create a List<A> as GraphQLObjectType
我想从我的 GraphQLDatafetcher return class A
个对象列表。我知道我可以像这样 return 一个 A
:
GraphQLObjectType a = GraphQLAnnotations.object(A.class);
...
GraphQLFieldDefinition.newFieldDefinition().type(a); // omitted boilerplate from query object
现在,我想要 return 一个 A
的列表,所以我尝试了这样的事情:
GraphQLObjectType aList = GraphQLAnnotations.object(List.class);
...
GraphQLFieldDefinition.newFieldDefinition().type(aList); // omitted
还有这个:
GraphQLObjectType aList = GraphQLAnnotations.object(new GraphQLList(A.class));
...
GraphQLFieldDefinition.newFieldDefinition().type(aList); // omitted
Class A
是这样注释的:
@GraphQLType
public class A {...}
第一次尝试 return 为 null,第二次尝试未使用 GraphQLList cannot be applied to java.lang.Class<A>
编译
一种解决方法是创建一个包含列表的包装器对象,但对我来说这似乎是一个丑陋的 hack。我如何使用 GraphQL java 2.3.0 return A
的列表?
我认为您需要执行以下操作:
GraphQLFieldDefinition.newFieldDefinition().type(new GraphQLList(A));
列表类型不是对象类型的子类型,因此您永远不能创建表示列表的对象类型。不过,这两种类型都是输出类型(列表也是一种输入类型)。这应该是你需要的。
GraphQLObjectType a = GraphQLAnnotations.object(A.class);
GraphQLOutputType listOfA = new GraphQLList(a);
然后您可以将此类型用作字段类型,就像 GraphQLObjectType
:
GraphQLFieldDefinition.newFieldDefinition().type(listOfA);
我想从我的 GraphQLDatafetcher return class A
个对象列表。我知道我可以像这样 return 一个 A
:
GraphQLObjectType a = GraphQLAnnotations.object(A.class);
...
GraphQLFieldDefinition.newFieldDefinition().type(a); // omitted boilerplate from query object
现在,我想要 return 一个 A
的列表,所以我尝试了这样的事情:
GraphQLObjectType aList = GraphQLAnnotations.object(List.class);
...
GraphQLFieldDefinition.newFieldDefinition().type(aList); // omitted
还有这个:
GraphQLObjectType aList = GraphQLAnnotations.object(new GraphQLList(A.class));
...
GraphQLFieldDefinition.newFieldDefinition().type(aList); // omitted
Class A
是这样注释的:
@GraphQLType
public class A {...}
第一次尝试 return 为 null,第二次尝试未使用 GraphQLList cannot be applied to java.lang.Class<A>
一种解决方法是创建一个包含列表的包装器对象,但对我来说这似乎是一个丑陋的 hack。我如何使用 GraphQL java 2.3.0 return A
的列表?
我认为您需要执行以下操作:
GraphQLFieldDefinition.newFieldDefinition().type(new GraphQLList(A));
列表类型不是对象类型的子类型,因此您永远不能创建表示列表的对象类型。不过,这两种类型都是输出类型(列表也是一种输入类型)。这应该是你需要的。
GraphQLObjectType a = GraphQLAnnotations.object(A.class);
GraphQLOutputType listOfA = new GraphQLList(a);
然后您可以将此类型用作字段类型,就像 GraphQLObjectType
:
GraphQLFieldDefinition.newFieldDefinition().type(listOfA);