Spring GraphQL @oneof Eingabe: Wie kann man polymorphe Java -Typen zugeordnet?Java

Java-Forum
Anonymous
 Spring GraphQL @oneof Eingabe: Wie kann man polymorphe Java -Typen zugeordnet?

Post by Anonymous »

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post