列挙型をパラメーターとしてクエリ呼び出しに渡す際に問題が発生しています。次の関連スニペットがあります。
列挙型定義
@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
望ましい動作は、引数をenumconfigurationByName
としてに渡し、データベース フィールドの対応するエントリ (enum 値) を更新することです。スカラー値を使用する (つまり、文字列を直接渡す) と、すべてが期待どおりに機能します。引数の型をスカラーから列挙型に変更する必要があります。通常、これはカスタム スキーマを構築するときにフィールド タイプを内部に設定することによって行われると思います。MicroProfile でこのオプションを設定する方法はありますか?buildQueryType
私は一般的にGraphQL、特にMicroProfileパラダイムにかなり慣れていないので、単純な見落としを許してください.MicroProfileを使用した同様のケースのドキュメントは見つかりません.
ありがとう!