Java-graphql использует преобразователь типа пространства имен с доступом к внутреннему классу

Использование схемы с таким набором

type Query {
    client: ClientQuery!
}

type ClientQuery {
    info(clientId: String): Client
}

type Client {
    gender: String
    name: String
}

у меня есть такой же reoslver для него

@Controller
class ClientResource {
   @QueryMapping
   fun client(@ContextValue clientId: Long): ClientQuery {
        val currentClient = getClient(clientId)
        log.info { "Current client $currentClient" }
        return query
    }

  @Controller
  class ClientQuery {
      @SchemaMapping(typeName = "ClientQuery ", field = "info")
      fun info(@Argument cleintId: String): Client {
         // some manipulation
        return Client()
      }
  }

}

но я хочу использовать inner class ClientQuery вместо class ClientQuery но когда я использую inner class при вызове запроса graphiql{client{info(clientId:"1"){gender,name}}} в ответ приходит ноль и я не вижу что был вызов внутреннего класса Может быть, есть что-то, чего мне не хватает

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Пожалуйста, убедитесь, что вы не сделали опечатку в вашем @Argument cleintId , так как в вашем запросе graphiql вы упоминаете, что отправляете clientId: "1".

Также вы можете попробовать разместить оба сопоставления на одном уровне внутри контроллера:

   @QueryMapping
   fun client(@ContextValue clientId: Long): ChatQuery {
        val currentClient = getClient(clientId)
        log.info { "Current client $currentClient" }
        return query
    }

   @SchemaMapping(typeName = "ClientQuery ", field = "info")
   fun info(@Argument cleintId: String): Client {
      // some manipulation
     return Client()
   }

да, тут все правильно спасибо, хочу узнать подробнее, можно ли в принципе использовать конструкцию, подобную внутреннему классу, внутри основного резолвера graphql

Вадим Панов 18.10.2022 17:54

По предложению "Хулио Сезар Эстравис" Я внес некоторые изменения, которые также используют «внутренний класс» в коде.

@Controller
class ClientResource {
  private val query = ClientQuery()

  @QueryMapping
  fun client(@ContextValue clientId: Long): ClientQuery {
    val currentClient = getClient(clientId)
    log.info { "Current client $currentClient" }
    return query
  }

  inner class ClientQuery

  @SchemaMapping(typeName = "ClientQuery ", field = "info")
  fun info(@Argument cleintId: String): Client {
    // some manipulation
    return Client()
  }
}

Другие вопросы по теме