我正在使用graphql-spqr这样我就不必创建schema.graphql文件了。我有一个基类,我的大多数其他类都继承自该基类。例如@GraphQLInterface(name = "BaseResponse", implementationAutoDiscovery = true)@ToString@Datapublic class BaseResponse { @JsonInclude(Include.NON_NULL) protected String responseCode; @JsonInclude(Include.NON_NULL) protected String responseDescription; protected String hash;}其他类继承自上述基类如下@ToString(callSuper = true)@Data@AllArgsConstructorpublic class GetAllGroupResponse extends BaseResponse { private List<Group> groups;}GetAllGroupResponse当我设置如下所示的父值时 getAllGroupResponse.setResponseCode(ResponseCodeEnum.SH_97.getRespCode()); getAllGroupResponse.setResponseDescription(ResponseCodeEnum.SH_97.getRespDescription());我希望从我的 graphql 查询请求中检索 responseCode 的值{ getAllPagable(pageNumber : 1, numberOfRecords : 3) { responseCode groups { groupName } }}但它在下面抛出一个错误,告诉我它看不到 responseCode 变量,因为它不是该类的直接属性GetAllGroupResponseFieldUndefined 类型的验证错误:“GetAllGroupResponse”类型中的字段“responseCode”未定义@“getAllPagable/responseCode”附言。BaseResponse来自导入到当前项目的不同包/库项目
1 回答

哈士奇WWW
TA贡献1799条经验 获得超6个赞
我认为您所需要的只是为您的项目设置基础包。例如
generator.withBasePackages("your.root.package", "library.root.package")
或者,如果您使用的是 SPQR Spring Starter,请添加
graphql.spqr.base-packages=your.root.package,library.root.package
到您的application.properties
文件,以获得相同的效果。
当你有一个跨多个包(甚至库,就像你的情况)的类层次结构时,这是需要的,让 SPQR 知道应该公开哪些包,因为否则它可能会意外地公开一些框架代码甚至核心 Java 东西,比如getClass。
添加回答
举报
0/150
提交
取消