2017-02-11 11 views
0

Как мне указать поле List в структуре java-graphql-annotations? К сожалению, я не нашел documentation об указании полей списка.Java GraphQL Аннотации: указать поле списка

Этот пример выдает ошибку:

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

ответ

0

Метод должен быть возвращающий тип для списка:

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

Ну, вы либо создать dataFetcher, который возвращает список и привязывает его к полю с помощью аннотации @GraphQLDataFetcher(FetcherClass.class) выше f ield (а затем метод никогда не вызывается, поэтому вы можете вернуть null), или вы можете вернуть список в самом методе.

Кстати, я не думаю, что он может работать с подстановочными знаками, вы должны указать тип