2017-08-31 88 views
0

私はオブジェクトのリストを受け入れる必要があります。ユーザ定義オブジェクトのリストを受け入れるためのGraphql

は、変異クラスのメソッドは、この

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

PingEntityのように見える

は私のクエリは、私がこのようなエラーを得た。この

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

のように見えるこの

@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; 

} 

のように見える :

"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" 
    } 
    ] 
} 

私は別の注釈を付けてみました。私は事前にこの問題で助けを必要と...

おかげで、この問題を解決することはできませんよ:)

答えて

1

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

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

しかし...もっと重要なのは、あなたのコードでは、私が見注釈として、(@GraphQLInputFieldを)どのようなライブラリを使用しているされているない graphql-Javaから(graphql-javaのよう自体は注釈を提供していない)、またいかなるから私が認めている図書館の

graphql-spqrの公式に公開されていないバージョンから来ているようです。これが事実である場合は、使用していると思われるバージョンが最高のアルファ品質だったので、最新のものに更新する必要があります。

関連する問題