ValidationError FieldUndefined SPQR GraphQL

时间:2018-04-26 12:22:00

标签: java graphql graphql-java graphql-spqr

我得到以下内容,似乎无法找到答案。

HashMap

我的代码。

查询

Map.Entry

Schema Gen

Error [ValidationError{validationErrorType=FieldUndefined, queryPath=[find_by_id], message=Validation error of type FieldUndefined: Field 'find_by_id' in type 'Query' is undefined @ 'find_by_id', locations=[SourceLocation{line=1, column=2}], description='Field 'find_by_id' in type 'Query' is undefined'}]

执行代码

@GraphQLQuery(name = "find_by_id")
public Event findById(@GraphQLArgument(name = "id") Long id) {

使用SPQR lib

事件POJO是基本的,eventName为String,抽象(Parent)类为id。实体类位于不同的jar(Entity Jar)中。执行查询和构建模式的代码在EJB Jar中。

任何有关我出错的帮助/指示都将受到赞赏。

更新 创建了一个git问题来帮助解决Git Issue

3 个答案:

答案 0 :(得分:3)

我在这里找到了这个解决方案:https://github.com/leangen/graphql-spqr/wiki/Errors#ambiguous-member-type

  

参考:   将所有缺少的类型参数视为Object或应用自定义类型   转换逻辑,提供TypeTransformer:

这应该适合你。

    GraphQLSchema schema = new GraphQLSchemaGenerator()
           .withBasePackages(basePackages)
           .withTypeTransformer(new DefaultTypeTransformer(true, true))
           .withOperationsFromSingleton(eventFacade).generate();

答案 1 :(得分:1)

我相信你必须改变这一点     字符串查询=" {find_by_id(id:1){eventName}}&#34 ;; 至     字符串查询=" \"查询\":{find_by_id(id:1){eventName}}&#34 ;;

答案 2 :(得分:1)

你可以添加偶数类详细信息,我猜这是你的问题所在,因为你的URL中的作者将一个类传递给查询,但你只传递ID(find_by_id),后跟{eventName}我认为它应改为

"{Event(id: 1){eventName}}"

作者给出了一个关于如何在以下示例中为供应商类使用findByID的示例,他以与您的格式不同的格式调用它,也许给出一个镜头:) https://github.com/leangen/graphql-spqr-samples