Ich verwende Spring GraphQL mit GraphQL-Java und möchte die neue in GraphQL 2022 eingeführte @oneof-Anweisung nutzen. < /p>
Hier ist eine vereinfachte Version meines Schemas: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>
Ich möchte dies in Java mit einer abstrakten Basisklasse zuordnen und die Feder automatisch den richtigen Typ binden: < /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>
Mein GraphQL -Controller sieht so aus: < /p>
@MutationMapping
public String createAnimal(@Argument AnimalRequest input) {
System.out.println(input.getAnimal());
return "ok";
}
< /code>
Wenn ich die Mutation ausführe: < /p>
mutation {
createAnimal(input: {
dog: {
name: "Buddy"
breed: "Beagle"
}
})
}
< /code>
Ich erhalte die Ausnahme, wie es nicht in der Lage ist, Tier zu instanziieren. Ist es eine abstrakte Klasse? Diskriminatorfeld wie Typ = Dog | Cat. < /li>
Ich möchte nur, dass Spring Graphql (oder Jackson) die Struktur basierend auf dem Vorhandensein eines einzelnen Feldes erkennen und sie entsprechend binden. ?
Thanks.
Spring GraphQL @oneof Eingabe: Wie kann man polymorphe Java -Typen zugeordnet? ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Warum sollte Jackson Informationen für serialisierte polymorphe Typen weglassen?
by Anonymous » » in Java - 0 Replies
- 15 Views
-
Last post by Anonymous
-
-
-
Warum sollte Jackson Informationen für serialisierte polymorphe Typen weglassen?
by Anonymous » » in Java - 0 Replies
- 12 Views
-
Last post by Anonymous
-