0

オブジェクトのリストを受け入れる必要があるという要件があります。

突然変異クラスのメソッドは次のようになります

@GraphQLMutation //1
    public void ack(@GraphQLInputField List<PingEntity> pingEntityList) { //2
        log.info("Handling ack calls.");        
        pingEntityRepository.savePingEntityList(pingEntityList);
    }

PingEntityはこんな感じ

@Data
//@Document(collection="pingdatastore")
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class PingEntity {

    private String id;

    @JsonProperty("action")
    private String action;

    @JsonProperty("message")
    private String message;

    @JsonProperty("timestamp")
    private Long timestamp;

    @JsonProperty("transactionId")
    private String transactionId;

    @JsonProperty("type")
    private Integer type;

    private String imei;

}

私のクエリは次のようになります

mutation ack {
  ack(pingEntityList: [{action: "KEEP-ALIVE2", message: "Keep alive message at regular intervals", timestamp: 1462747047}]) {
    id
  }
}

次のようなエラーが発生しました。

"data": null,
  "errors": [
    {
      "validationErrorType": "SubSelectionNotAllowed",
      "message": "Validation error of type SubSelectionNotAllowed: Sub selection not allowed on leaf type Boolean",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "errorType": "ValidationError"
    }
  ]
}

さまざまな注釈を付けてみました。この問題を解決できません..この問題について助けが必要です

前もって感謝します :)

4

1 に答える 1

2

問題は、より良いオプションがないために、ackメソッドがvoidにマップされるものを返すことです。boolean単純なスカラーであるためboolean、そこから何も選択できずid、クエリで を選択しようとしています。

ack保存された を返すようにメソッドを変更するとList<PingEntity>、必要な動作が得られます。

しかし...もっと重要なのは@GraphQLInputField、コードに表示される注釈( )がgraphql-java(graphql-java自体は注釈を提供しないため)でも、私が認識しているどのライブラリからのものでもないため、使用しているライブラリは何ですか?

これは、graphql-spqr の非常に古く、公開されていないバージョンから来ているようです。これが実際に当てはまる場合、使用していると思われるバージョンはせいぜいアルファ品質であるため、最新に更新する必要があります.

于 2017-09-06T09:23:12.773 に答える