Skip to content

Commit 31f5075

Browse files
committed
Update docs for batched EntityMapping methods
Closes gh-922
1 parent 3f7e0f1 commit 31f5075

File tree

1 file changed

+36
-3
lines changed

1 file changed

+36
-3
lines changed

spring-graphql-docs/modules/ROOT/pages/federation.adoc

+36-3
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,38 @@ For example:
7777
}
7878
----
7979

80-
The `@Argument` method parameters is resolved from the "representation" input map for the entity.
81-
You can also inject the full "representation" input `Map`.
80+
The `@Argument` method parameters is resolved from the "representation" input map for
81+
the entity. You can also inject the full "representation" input `Map`. See
82+
xref:federation.adoc#federation.entity-mapping.signature[Method Signature] for all
83+
supported method argument and return value types.
84+
85+
You can batch load federated entities by returning a `List` of instances from the controller
86+
method and accepting a `List` of argument values. In addition, you can use `@BatchMapping`
87+
methods for subfields.
88+
89+
For example:
90+
91+
[source,java,indent=0,subs="verbatim,quotes"]
92+
----
93+
@Controller
94+
private static class BookController {
95+
96+
@EntityMapping
97+
public List<Book> book(@Argument List<Integer> idList) {
98+
// ...
99+
}
100+
101+
@BatchMapping
102+
public Map<Book, Author> author(List<Book> books) {
103+
// ...
104+
}
105+
}
106+
----
107+
108+
Note `idList` naming convention for the argument, which helps Spring for GraphQL to
109+
de-pluralize the method parameter name and derive the correct argument name to use.
110+
Alternatively, set the argument name through the annotation.
111+
82112

83113

84114
[[federation.entity-mapping.signature]]
@@ -96,6 +126,10 @@ Entity mapping methods support the following arguments:
96126
| `Map<String, Object>`
97127
| The full "representation" input map for the entity.
98128

129+
| `List<Map<String, Object>>`
130+
| The list of "representation" input maps when using a single controller method to load
131+
all entities of a given type.
132+
99133
| `@ContextValue`
100134
| For access to an attribute from the main `GraphQLContext` in `DataFetchingEnvironment`.
101135

@@ -132,4 +166,3 @@ You can use `@GraphQlExceptionHandler` methods to map exceptions from `@EntityMa
132166
methods to ``GraphQLError``'s. The errors will be included in the response of the
133167
"_entities" query. Exception handler methods can be in the same controller or in an
134168
`@ControllerAdvice` class.
135-

0 commit comments

Comments
 (0)