gpt4 book ai didi

java - Graphql 接受用户定义对象列表

转载 作者:行者123 更新时间:2023-12-02 02:37:57 31 4
gpt4 key购买 nike

我有一个要求,我必须接受对象列表。

突变类中的方法如下所示

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

我尝试给出不同的注释。我无法解决这个问题..需要帮助解决这个问题

提前致谢:)

最佳答案

问题似乎是你的 ack方法返回 void它被映射到 boolean ,因为缺乏更好的选择。如boolean是一个简单的标量,您无法从中选择任何内容,并且您正在尝试选择 id在查询中。

如果您更改 ack方法返回保存的List<PingEntity> ,你会得到你想要的行为。

但是...更重要的是,您使用的是什么库,因为我在代码中看到的注释( @GraphQLInputField )不是来自 graphql-java (因为 graphql-java 本身没有提供注释),也不是来 self 认识的任何库。

它似乎来自一个非常古老且从未公开发布的 graphql-spqr 版本。如果确实如此,您绝对需要更新到最新版本,因为您似乎使用的版本充其量只是 alpha 质量。

关于java - Graphql 接受用户定义对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45974869/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com