Spring Boot拆分GraphQL Schema后查询无结果问题排查
Spring GraphQL拆分Schema无查询结果的错误排查
重复定义Query类型导致字段丢失
拆分Schema文件时,多个文件中直接定义type Query会触发Schema合并冲突,Spring GraphQL仅会保留最后加载的Query定义,其他文件中的Query字段会被直接丢弃。正确的做法是在一个主文件(比如root.graphql)中定义基础空Query,其他实体文件通过extend type Query扩展:
示例:
root.graphql:type Query { # 基础空Query,用于被其他文件扩展 }book.graphql:
type Book { id: ID! name: String! } extend type Query { getBook(id: ID!): Book listBooks: [Book!]! }author.graphql:
type Author { id: ID! name: String! books: [Book!]! } extend type Query { getAuthor(id: ID!): Author listAuthors: [Author!]! }Schema文件扫描配置不完整
检查application.properties中的配置:- 确保
spring.graphql.schema.locations指向你的Schema文件所在目录,比如classpath:graphql/,若文件在子目录,需调整路径或使用通配符。 - 确保
spring.graphql.schema.files包含所有拆分文件,比如配置为**/*.graphql扫描目录下所有.graphql后缀文件,避免仅指定单个文件名导致部分Schema未加载。
- 确保
DataFetcher与Schema字段不匹配
检查Resolver类中的@QueryMapping注解名称是否和Schema中扩展的Query字段完全一致(大小写、名称必须完全匹配)。比如Schema中是getBook,Resolver方法需对应:@QueryMapping("getBook") public Book getBook(@Argument String id) { // 业务逻辑实现 }若名称不匹配,Spring无法绑定DataFetcher,查询会返回空结果。
内容的提问来源于stack exchange,提问作者shortduck
相关产品推荐
相关产品推荐

