1

列挙型をパラメーターとしてクエリ呼び出しに渡す際に問題が発生しています。次の関連スニペットがあります。

列挙型定義

    @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を使用した同様のケースのドキュメントは見つかりません.

ありがとう!

4

1 に答える 1