在具有不同值的graphql模式中使用java枚举

问题描述 投票:0回答:1

我有java枚举

public enum JavaStatus{
ACTIVE,
PAUSED,
STOPPPED;
}

我想通过 graphql 使用小写值发送和接收这个枚举。前端应该能够加载图形模式来检查可用值。所以 schema.graphqls 应该包含:

enum GraphqlStatus{
active
paused
stopped
}

如何绘制它?

我试过了

@Bean(name = "graphqlStatusEnum)
    public GraphQLEnumType graphqlStatusEnum() {
        return GraphQLEnumType.newEnum().name("GraphqlStatus")
                .value("active", JavaStatus.ACTIVE)
                .value("paused", JavaStatus.PAUSED)
                .value("stopped", JavaStatus.STOPPPED)
                .build();
    }

但是我遇到了错误

Expected value for name 'active' in enum 'JavaStatus' but found none!

java enums graphql mapping graphql-java
1个回答
0
投票

将自定义

EnumValuesProvider
添加到 GraphQL 连接:

@Configuration
public class GraphQLConfig {
    @Bean
    public RuntimeWiringConfigurer runtimeWiringConfigurer() {
        return wiringBuilder -> wiringBuilder
                .type(newTypeWiring("GraphqlStatus")
                        .enumValues(graphqlStatusEnum())
                );
    }

    private EnumValuesProvider graphqlStatusEnum() {
        return new MapEnumValuesProvider(Map.of("active", JavaStatus.ACTIVE, "paused", JavaStatus.PAUSED, "stopped", JavaStatus.STOPPED));
    }
}

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.