gpt4 book ai didi

spring-boot - GraphQl:对象类型 "xxx"实现了一个已知接口(interface),但找不到该类型名称的类

转载 作者:行者123 更新时间:2023-12-04 17:21:42 24 4
gpt4 key购买 nike

GraphQl 和 spring boot。

图 ql 模式

type Query {
animal(id: ID!): Animal!
}

interface Animal{
id: ID
name: String
}

type Cat implements Animal {
id: ID
name: String
}

type Dog implements Animal {
id: ID
name: String
}


fun animal(id: String): CompletableFuture<Any> {
return service.getAnimal(id).toFuture();
}

错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schemaParser' defined in class path resource [graphql/kickstart/tools/boot/GraphQLJavaToolsAutoConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [com.coxautodev.graphql.tools.SchemaParser]:工厂方法 'schemaParser' 抛出异常;嵌套异常是 com.coxautodev.graphql.tools.SchemaClassScannerError:对象类型“Cat”实现了一个已知接口(interface),但找不到该类型名称的类。请在解析器的字典中为“Cat”类型传递一个类。

最佳答案

两种方案(kotlin)

解决方案 1:将配置文件添加到您的项目并将类添加到字典

@Configuration
class GraphQLConfig {

@Bean
@Primary
fun schemaParserDictionary(): SchemaParserDictionary? {
val dictionary = SchemaParserDictionary()
dictionary.add("Cat", Cat::class.java)
dictionary.add("Dog", Dog::class.java)
return dictionary
}
}

解决方案 2:为每种类型添加解析器并修改架构

  • 添加虚拟解析器

    fun cat(): Cat? {
    return null
    }

    fun dog(): Dog? {
    return null
    }
  • 也改变模式

之前

type Query {
animal(id: ID!): Animal!
}

之后

type Query {
animal(id: ID!): Animal!
cat
dog
}

关于spring-boot - GraphQl:对象类型 "xxx"实现了一个已知接口(interface),但找不到该类型名称的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65776223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com