Skip to content

Multiple

Say you need the result from several root queries, e.g. all superHeroes and all superVillains. Java only supports a single return value, so you’ll need a wrapper class:

@GraphQLClientApi
interface SuperHeroesApi {
    HeroesAndVillains heroesAndVillains();
}

@Multiple
class HeroesAndVillains {
    List<SuperHero> superHeroes;
    List<SuperVillain> superVillains;
}

The @Multiple annotation 'inlines' the wrapper class, i.e. the actual query is:

query heroesAndVillains { superHeroes {...} superVillains {...}}

The actual response below will be mapped to an instance of the HeroesAndVillains wrapper class:

{
  "data": {
    "superHeroes": [ ... ],
    "superVillains": [ ... ]
  }
}

If the nested queries require parameters, use @ annotations to put them on the field (remember: GraphQL fields can have parameters).

If you need the same request several times (e.g. with different query parameters), use @Name annotations, so the actual field names are used as alias.