问题描述
我正在使用 GraphQL Java 实现,我的简化架构如下所示:
topSection: TopSection {
anotherSection: AnotherSection {
name: String
## someMetadata: String (not part of schema)
someAttribute: Attribute
}
}
我必须为 topSection
和 someAttribute
字段实现解析器。对于其他字段,我将依赖 GraphQL 的隐式属性获取。
现在,要使 someAttribute
的解析器工作,我需要设置 someMetadata
并将其传递给它。
一种选择是使其成为架构的一部分,someAttribute
解析器可以从 parent
参数中检索它,但我不希望它成为架构的一部分。我已经验证这有效。
然后,我尝试从 AnotherSection
解析器返回带有 someMetadata
字段的 topSection
子类,但是我遇到了 NPE 内部故障。
class TopSectionResolver implements DataFetcher<TopSection> {
@Override
public TopSection get(final DataFetchingEnvironment dataFetchingEnvironment) {
AnotherSection anotherSection = AnotherSectionSubClass.builder().name().someMetadata().someAttribute().build();
return TopSection.builder().anotherSection(anotherSection).build();
}
}
class SomeAttributeResolver implements DataFetcher<Attribute> {
@Override
public Attribute get(final DataFetchingEnvironment dataFetchingEnvironment) {
String someMetadata = ((AnotherSectionSubClass) dataFetchingEnvironment.getSource()).getSomeMetadata();
// other processing
}
}
AnotherSectionSubClass extends AnotherSection {
String name;
String someMetadata;
Attribute someAttribute
}
错误:
{\"errors\":[{\"message\":\"The execution Failed due to an internal error: java.util.concurrent.ExecutionException: java.lang.NullPointerException\",\"extensions\":{\"classification\":\"DataFetchingException\"}}]}
我无法从 GraphQL 日志中找出失败的原因。
- 有人能解释为什么这种传递子类的方法失败了吗?
- 还有什么其他选择可以实现我想要的?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)