Spring GraphQL @Oneof Input: Как карта на полиморфные типы Java?JAVA

Программисты JAVA общаются здесь
Anonymous
Spring GraphQL @Oneof Input: Как карта на полиморфные типы Java?

Сообщение Anonymous »

Я использую Spring GraphQL с GraphQl-Java и хочу использовать новую директиву @Oneof, представленную в GraphQL 2022. < /p>
Вот упрощенная версия моей схемы: < /p>
type Mutation {
createAnimal(input: AnimalInput!): String
}

input AnimalInput @oneOf {
dog: DogInput
cat: CatInput
}

input DogInput {
name: String
breed: String
}

input CatInput {
name: String
color: String
}

< /code>
Я хочу отобразить это в Java, используя абстрактный базовый класс и пусть Spring автоматически связывает правильный тип: < /p>
public class AnimalRequest {
private Animal animal;
// getters/setters
}

public abstract class Animal {
}

public class Dog extends Animal {
private String name;
private String breed;
}

public class Cat extends Animal {
private String name;
private String color;
}

< /code>
Мой контроллер GraphQL выглядит следующим образом: < /p>
@MutationMapping
public String createAnimal(@Argument AnimalRequest input) {
System.out.println(input.getAnimal());
return "ok";
}

< /code>
Когда я запускаю мутацию: < /p>
mutation {
createAnimal(input: {
dog: {
name: "Buddy"
breed: "Beagle"
}
})
}

< /code>
Я получаю исключение, подобное неспособности создать экземпляр животного. Это абстрактный класс? Полевое подобное тип = Dog | Cat. < /li>
Я просто хочу, чтобы Spring GraphQl (или Jackson) распознал структуру, основанную на наличии одного поля и соответственно связала его. ?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... java-types

Вернуться в «JAVA»