为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3242003 2023-02-23 10:23:23
我正在使用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


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号