Building a microservice in java using -
spring-boot version 2.2.6.RELEASE graphql-spring-boot-starter version 5.0.2
Trying to persist record in MongoDB using graphql mutation, I successfully persisted through Single Object like below -
type ParentElement { id: ID! type: String child: String } But when trying out with nested object, I am seeing following error -
Caused by: com.coxautodev.graphql.tools.SchemaError: Expected type 'ChildElement' to be a GraphQLInputType, but it wasn't! Was a type only permitted for object types incorrectly used as an input type, or vice-versa?
My Schema is as follows -
schema { query: Query mutation: Mutation } type ChildElement { make: String model: String } type ParentElement { id: ID! type: String child: ChildElement } type Query { findAllElements: [ParentElement] } type Mutation { createElement(id: String, type: String, child: ChildElement): ParentElement } Pojo Classes & Mutation are as follows -
@Document(collection="custom_element") public class ParentElement { private String id; private String type; private ChildElement child; } public class ChildElement { private String make; private String model; } @Component public class ElementMutation implements GraphQLMutationResolver { private ElementRepository elementRepository; public ElementMutation(ElementRepository elementRepository) { this.elementRepository = elementRepository; } public ParentElement createElement(String id, String type, ChildElement child) { ParentElement element = new ParentElement() elementRepository.save(element); return element; } } @Component public class ElementQuery implements GraphQLQueryResolver { private ElementRepository elementRepository; @Autowired public ElementQuery(ElementRepository elementRepository) { this.elementRepository = elementRepository; } public Iterable<ParentElement> findAllElements() { return elementRepository.findAll(); } } @Repository public interface ElementRepository extends MongoRepository<ParentElement, String>{ } I want to save following json representation in mongo db -
{ "id": "custom_id", "type": "custom_type", "child": { "make": "custom_make", "model": "Toyota V6", } } I tried several things but when starting server always getting same exception. The above json is a simple representation. I want to save much more complex one, the difference with other examples available online is that I don't want to create separate mongo object for child element as shown with Book-Author example available online.