Я получаю следующее и не могу найти ответа.
Error [ValidationError{validationErrorType=FieldUndefined, queryPath=[find_by_id], message=Validation error of type FieldUndefined: Field 'find_by_id' in type 'Query' is undefined @ 'find_by_id', locations=[SourceLocation{line=1, column=2}], description='Field 'find_by_id' in type 'Query' is undefined'}]
Мой код.
Запрос
@GraphQLQuery(name = "find_by_id")
public Event findById(@GraphQLArgument(name = "id") Long id) {
Схема Gen
@EJB
private EventFacade eventFacade; // Normal stateless bean
GraphQLSchema guestSchema = new GraphQLSchemaGenerator()
.withOperationsFromSingleton(eventFacade)
.withValueMapperFactory(new JacksonValueMapperFactory())
.withDefaults()
.generate();
GraphQL graphQL = GraphQL.newGraphQL(guestSchema).build();
Код для выполнения
String query = "{find_by_id (id: 1){eventName}}";
ExecutionResult result = graphQL.execute(query);
Использование библиотеки SPQR
Событие POJO является основным с eventName как String и идентификатором из абстрактного (Parent) класса. Класс сущности находится в другой банке (Entity Jar). Код для выполнения запроса и схемы сборки находится в EJB Jar.
Любая помощь / указание, где я ошибся, будет оценена по достоинству.
ОБНОВИТЬ Создана проблема с git, чтобы помочь решить Проблема с Git




Я считаю, что ты должен это изменить String query = "{find_by_id (id: 1) {eventName}}"; к Строка query = "\" query \ ": {find_by_id (id: 1) {eventName}}";
Получение следующего, если я добавлю его graphql.GraphQL - Запрос не удалось проанализировать: '"query": {find_by_id (id: 1) {eventName}}'
Можете ли вы добавить детали четного класса, я предполагаю, что в этом заключается ваша проблема, поскольку автор в вашем URL-адресе передает класс в запрос, но вы передаете только идентификатор (find_by_id), за которым следует {eventName}, я думаю, его следует изменить к
"{Event(id: 1){eventName}}"
Автор привел пример того, как использовать findByID в приведенных ниже примерах для класса поставщика, и он называет его в формате, отличном от вашего, может быть, попробую :) https://github.com/leangen/graphql-spqr-samples
Пробовал и не работает. Я считаю, что первая часть - это только имя запроса, а не класс / тип
Я не уверен, что вы прочитали библиотеку. Это объяснит большую часть того, что я пытаюсь сделать. Также не строю свою собственную схему, поскольку библиотека делает это за меня.
Я нашел это решение здесь: https://github.com/leangen/graphql-spqr/wiki/Errors#ambiguous-member-type
Reference: To treat all missing type arguments as Object or apply custom type transformation logic, supply a TypeTransformer:
Это должно сработать для вас.
GraphQLSchema schema = new GraphQLSchemaGenerator()
.withBasePackages(basePackages)
.withTypeTransformer(new DefaultTypeTransformer(true, true))
.withOperationsFromSingleton(eventFacade).generate();
Это требуется .withBasePackages (basePackages)?
Нет, это не обязательно, я тоже должен был упомянуть в своем ответе. Вам нужно убедиться, что .withTypeTransformer стоит раньше .withOperationsFromSingleton.
Библиотека, которую я использую, не требует этого. См. Пример из библиотеки