通过查询模式通过子对象访问父对象的受保护字段

我正在使用graphql-spqr这样我就不必创建schema.graphql文件了。


我有一个基类,我的大多数其他类都继承自该基类。例如


@GraphQLInterface(name = "BaseResponse", implementationAutoDiscovery = true)

@ToString

@Data

public class BaseResponse {


    @JsonInclude(Include.NON_NULL)

    protected String responseCode;


    @JsonInclude(Include.NON_NULL)

    protected String responseDescription;


    protected String hash;


}

其他类继承自上述基类如下


@ToString(callSuper = true)

@Data

@AllArgsConstructor

public 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 变量,因为它不是该类的直接属性GetAllGroupResponse


FieldUndefined 类型的验证错误:“GetAllGroupResponse”类型中的字段“responseCode”未定义@“getAllPagable/responseCode”


附言。BaseResponse来自导入到当前项目的不同包/库项目


慕妹3242003
浏览 116回答 1
1回答

哈士奇WWW

我认为您所需要的只是为您的项目设置基础包。例如generator.withBasePackages("your.root.package",&nbsp;"library.root.package")或者,如果您使用的是 SPQR Spring Starter,请添加graphql.spqr.base-packages=your.root.package,library.root.package到您的application.properties文件,以获得相同的效果。当你有一个跨多个包(甚至库,就像你的情况)的类层次结构时,这是需要的,让 SPQR 知道应该公开哪些包,因为否则它可能会意外地公开一些框架代码甚至核心 Java 东西,比如getClass。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java