Java graphql spqr无法查询父类字段

Java graphql spqr无法查询父类字段,java,spring-boot,graphql,graphql-java,graphql-spqr,Java,Spring Boot,Graphql,Graphql Java,Graphql Spqr,我尝试使用多态性实现实体类 这是我的BaseEntity @Getter @塞特 @访问器(链=真) @映射超类 @诺尔格构装师 @AllArgsConstructor @EntityListeners(AuditingEntityListener.class) 公共类基实体{ @身份证 @GeneratedValue(策略=GenerationType.IDENTITY) 私人长id; @大小(最大值=55,消息=“名称长度大于55”) 私有字符串名称; @大小(最大值=255,message

我尝试使用多态性实现实体类

这是我的
BaseEntity

@Getter
@塞特
@访问器(链=真)
@映射超类
@诺尔格构装师
@AllArgsConstructor
@EntityListeners(AuditingEntityListener.class)
公共类基实体{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@大小(最大值=55,消息=“名称长度大于55”)
私有字符串名称;
@大小(最大值=255,message=“备注长度超过255”)
私人字符串注释;
}
和我的实体

@数据
@诺尔格构装师
@表(name=“sys\u user”)
@实体(名称=“系统用户”)
@访问器(链=真)
@ToString(callSuper=true)
@EqualsAndHashCode(callSuper=true)
公共类SysUser extends BaseEntity实现可序列化{
@非空
私有字符串用户名;
@非空
私有字符串密码;
}
在我的控制器中

@控制器
@GraphQLApi
@所需参数构造函数
公共类SysUserController实现BaseController{
私有最终SysUserRepository SysUserRepository;
@图形查询
公共列表sysUsers(){
返回sysUserRepository.findAll();
}
}
我的GraphQL配置

@配置
@所需参数构造函数
公共类GraphQLConfig{
私有最终@NotNull列表控制器列表;
@豆子
公共GraphQLSchema GraphQLSchema(){
GraphQLSchemaGenerator生成器=新GraphQLSchemaGenerator();
发电机。从单点操作(控制器列表到阵列());
返回生成器.generate();
}
}
现在,我试着

{
  sysUsers {
    username
  }
}
结果是正确的

{
  "data": {
    "sysUsers": [
      {
        "username": "Hello"
      }
    ]
  }
}
但我尝试获取父类字段:

{
  sysUsers {
    name
  }
}
我会得到一个错误

{
  "errors": [
    {
      "message": "Validation error of type FieldUndefined: Field 'name' in type 'SysUser' is undefined @ 'sysUsers/name'",
      "locations": [
        {
          "line": 3,
          "column": 5
        }
      ]
    }
  ]
}
我使用
io.leangen.graphql:graphql-spqr-springbootstarter:0.0.4

如何解决这个问题


谢谢

继承的字段只有在配置包中时才会公开。这样,您就不会意外地公开框架字段、JDK字段(如
hashCode
)等。如果没有配置基本包,SPQR将保留在直接公开的类所在的包中

要配置基本软件包,请添加以下内容:

graphql.spqr.base-packages=your.root.package,your.other.root.package
到您的
应用程序.properties
文件


注意:这些字段,因此默认情况下会公开所有非JDK字段,因为当前的行为似乎会让太多人感到困惑。

继承的字段只有在配置的包中才会公开。这样,您就不会意外地公开框架字段、JDK字段(如
hashCode
)等。如果没有配置基本包,SPQR将保留在直接公开的类所在的包中

要配置基本软件包,请添加以下内容:

graphql.spqr.base-packages=your.root.package,your.other.root.package
到您的
应用程序.properties
文件


注意:这些,因此默认情况下会公开所有非JDK字段,因为当前的行为似乎让太多人感到困惑。

我建议您根据graphql模式中定义的类型添加自动生成类。 它将使您更清楚地了解向用户公开的内容,并在将来避免此类错误。 以下是插件:

  • Gradle插件:
  • Maven插件:

我建议您根据graphql模式中定义的类型添加自动生成类。 它将使您更清楚地了解向用户公开的内容,并在将来避免此类错误。 以下是插件:

  • Gradle插件:
  • Maven插件:

您找到解决方案了吗?您找到解决方案了吗?