我在将枚举类型作为参数传递给查询调用时遇到问题。我有以下相关片段:
枚举定义
@Enum("ConfigurationEnum")
@Description("The available configuration names")
public enum ConfigurationEnum{
allocation_projection("allocation.projection.maxHistoryDays"),
testing_thingy("testing.graphql.config.service.save");
private final String configurationValue;
private ConfigurationEnum(String configurationValue){
this.configurationValue = configurationValue;
}
@Override
public String toString() {
return this.configurationValue;
}
}
资源端点
@Query("configurationByName")
@Description("Get a configuration by name")
@Transactional
public Configuration getByName(@Name("name") ConfigurationEnum name){
return Configuration.getByName(name.toString());
}
功能实现
@ApplicationScoped
@Entity
@Table(name="CONFIGURATION")
public class Configuration extends PanacheEntityBase {
@Id
@NotNull
private String name;
private String value;
public static Configuration getByName(String name){
return find("name", name).firstResult();
}
我的示例查询:
query searchByName {
configurationByName(name: allocation_projection) {
name
value
}
}
产生的错误:
"message": "Validation error of type WrongType: argument 'name' with value 'StringValue{value='allocation_projection'}' is not a valid 'Unknown Scalar Type
所需的行为是将参数configurationByName
作为enum传递给,然后更新数据库字段中的相应条目 - 枚举值。使用标量值 - 即直接传递字符串 - 一切都按预期工作。我需要将参数的类型从标量更改为枚举。一般来说,我相信这是通过buildQueryType
在构建自定义模式时设置字段类型来完成的。有没有办法在 MicroProfile 中设置此选项?
总的来说,我对 GraphQL 非常陌生,尤其是对 MicroProfile 范例,所以请原谅我可能做出的任何简单疏忽——我找不到任何使用 MicroProfile 的类似案例的文档。
谢谢!