ValidationError FieldUndefined SPQR GraphQL - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю следующее и, похоже, не могу найти ответ.

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 lib

Событие POJO является базовым с eventName в качестве String и идентификатором из абстрактного (Parent) класса. Класс сущности находится в другой банке (Entity Jar). Код для выполнения Query и схема сборки находятся в EJB Jar.

Буду признателен за любую помощь / указание, где я ошибся.

UPDATE Создана проблема git, чтобы помочь решить Проблема Git

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Можете ли вы добавить сведения о четном классе, полагаю, в этом и заключается ваша проблема, поскольку автор в вашем URL передает класс в запрос, но вы передаете только идентификатор (find_by_id), за которым следует {eventName}, я думаю, это следует изменить на

"{Event(id: 1){eventName}}"

Автор привел пример того, как использовать findByID в приведенных ниже примерах для класса Vendor, и он называет его в другом формате, чем у вас, возможно, попробуйте :) https://github.com/leangen/graphql-spqr-samples

0 голосов
/ 10 мая 2018

Я нашел это решение здесь: https://github.com/leangen/graphql-spqr/wiki/Errors#ambiguous-member-type

Ссылка: Обрабатывать все отсутствующие аргументы типа как Object или применять пользовательский тип логика преобразования, поставьте TypeTransformer:

Это должно сработать для вас.

    GraphQLSchema schema = new GraphQLSchemaGenerator()
           .withBasePackages(basePackages)
           .withTypeTransformer(new DefaultTypeTransformer(true, true))
           .withOperationsFromSingleton(eventFacade).generate();
0 голосов
/ 27 апреля 2018

Я считаю, что вы должны изменить это String query = "{find_by_id (id: 1) {eventName}}"; в String query = "\" query \ ": {find_by_id (id: 1) {eventName}}";

...