Graphql 字段输入类型';长';解析类型';查询';[@6:1]

Graphql 字段输入类型';长';解析类型';查询';[@6:1],graphql,graphql-js,graphql-java,express-graphql,prisma-graphql,Graphql,Graphql Js,Graphql Java,Express Graphql,Prisma Graphql,在初始化graphql模式时,我得到了以下错误跟踪 调用init方法失败;嵌套异常为SchemaProblem{errors=[解析类型“Query”[@6:1]时字段输入类型“Long”不存在,解析类型“ObjectRef”[@17:1]]时字段类型“Long”不存在] 位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor$AutoWiredFeldElement.inject(Aut

在初始化graphql模式时,我得到了以下错误跟踪

调用init方法失败;嵌套异常为SchemaProblem{errors=[解析类型“Query”[@6:1]时字段输入类型“Long”不存在,解析类型“ObjectRef”[@17:1]]时字段类型“Long”不存在] 位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor$AutoWiredFeldElement.inject(AutoWiredNotationBeanPostProcessor.java:639) 位于org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:116) 位于org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:397) 在

其中ObjectRef是我的对象

type ObjectRef{
id:Long
qualifier : String
}
我正在使用以下一组JAR来编译我的项目

compile files('libs/latest/graphql-java-servlet-6.1.3.jar')
compile files('libs/latest/graphql-java-16.2.jar')
compile files('libs/latest/graphql-java-tools-5.2.4.jar')
compile files('libs/latest/graphql-spring-boot-autoconfigure-5.0.2.jar')
compile files('libs/latest/graphql-spring-boot-starter-5.0.2.jar')
compile files('libs/latest/antlr4-runtime-4.9.2.jar')
compile files('libs/lombok-1.16.18.jar')
compile files('libs/latest/graphql-java-extended-scalars-16.0.1.jar')
这是我的模式加载器

@PostConstruct
private void loadSchema() throws IOException {
// get the schema
File schemaFile = schemaResource.getFile();
System.out.println(schemaFile.getAbsolutePath());
// parse schema
TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(schemaFile);
System.out.println("type Registry..."+typeRegistry);
RuntimeWiring wiring = buildRuntimeWiring();
System.out.println("wiring..."+wiring);
GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring);
System.out.println("schema..."+schema);
graphQL = GraphQL.newGraphQL(schema).build();
}

private RuntimeWiring buildRuntimeWiring() {
System.out.println("buildRuntimeWiring...");
return RuntimeWiring.newRuntimeWiring().type("Query", typeWiring -> typeWiring
.dataFetcher("a", customDataFetcher)
).build();
}
问候
Kushagra

我能够使用标量解决上述问题。我已经创建了一个名为Long的新标量,并在.graphqls中使用下面的方法使用相同的标量。标量长返回RuntimeWiring.newRuntimeWiring().type(“Query”,typeWiring->typeWiring.dataFetcher(“a”,customDataFetcher).scalar(ExtendedScalars.GraphQLLong)).build();它还需要创建一个ScalarType实现以预期的方式运行。如果有人需要完整的代码,请随意点击此票证。

Long
不是有效类型,您需要
Int
Float
确定。。但我正在尝试将GraphQL与现有系统集成,因此在我的情况下不可能对其进行更改。因此,我必须使我的更改与现有系统兼容。我已经看到了这一点,你认为它能解决问题吗/我能用标量解决上述问题。我已经创建了一个名为Long的新标量,并在.graphqls中使用下面的方法使用相同的标量。标量长返回RuntimeWiring.newRuntimeWiring().type(“Query”,typeWiring->typeWiring.dataFetcher(“a”,customDataFetcher).scalar(ExtendedScalars.GraphQLLong)).build();它还需要创建一个ScalarType实现以预期的方式运行。如果有人需要完整的代码,请随意点击这张票。