Возможно ли из DataFetchingEnvironment получить значение поля родителя?
У меня реализован сервис с GraphQL на spring-boot-starter-graphql
Есть простая схема, где поле c зависит от id B:
type A {
id: Int!
b: [B]
}
type B {
id: Int!
с: C
}
type C {
с: C //Зависит от id type B
}
Реализован контроллер и даталоудер:
@QueryMapping
public A getA(DataFetchingEnvironment environment) {
A a = repo.getA();
int index = 0;
for (B b : a.getB()) {
environment.getGraphQlContext().put(index, b.getId());
index++;
}
return A;
}
@SchemaMapping(field = "c", typeName = "C")
public C getC(DataFetchingEnvironment environment) {
Integer currentIndex = environment.getExecutionStepInfo().getParent().getParent().getPath().getSegmentIndex();
C c = repo2.getC(environment.getGraphQlContext().get(currentIndex));
return c;
}
Что бы получить ID типа B в будующем я в QueryMapping в контекст записываю мапу (index, id): Пример: (0,123) (1,247)
В SchemaMapping у меня доступен только объект C и я ничего не знаю про объект B. Единственное что мне получилось достать - это его индекс в списке , поэтому я вытаскиваю id B из контекста.
Соответственно вопрос. Могу ли я как то в DataFetchingEnvironment достать value родителя, что бы не играться так с контекстом?