You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Netflix DGS Codegen+Relay分页无法生成正确DataFetcher类

解决Maven中graphqlcodegen与Netflix DGS Relay分页的类型映射问题

要让graphqlcodegen生成符合Netflix DGS Relay分页要求的Connection<Employee>类型而非自定义的EmployeeConnection,关键是在Maven插件配置中添加类型映射规则,将Schema中生成的Connection/Edge类型映射到DGS提供的泛型类。

具体Maven插件配置

在你的pom.xml的graphql-codegen-maven-plugin配置块中,添加<typeMappings>节点,指定自定义Connection/Edge类型与DGS官方类的映射关系:

<plugin>
    <groupId>io.github.deweyjose</groupId>
    <artifactId>graphql-codegen-maven-plugin</artifactId>
    <version>最新稳定版</version> <!-- 替换为项目实际使用的版本 -->
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <!-- 保留原有配置(如schema路径、生成目录等) -->
                <typeMappings>
                    <!-- 将Schema生成的EmployeeConnection映射到DGS的泛型Connection类 -->
                    <typeMapping>
                        <from>EmployeeConnection</from>
                        <to>com.netflix.graphql.dgs.client.codegen.Connection&lt;Employee&gt;</to>
                    </typeMapping>
                    <!-- 同步映射Edge类型,保证分页结构完整性 -->
                    <typeMapping>
                        <from>EmployeeEdge</from>
                        <to>com.netflix.graphql.dgs.client.codegen.Edge&lt;Employee&gt;</to>
                    </typeMapping>
                </typeMappings>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <!-- 引入DGS客户端依赖,确保映射类可被识别 -->
        <dependency>
            <groupId>com.netflix.graphql.dgs</groupId>
            <artifactId>graphql-dgs-client</artifactId>
            <version>项目DGS版本</version> <!-- 与项目使用的DGS版本保持一致 -->
        </dependency>
    </dependencies>
</plugin>

配置说明

  • <from>:对应Schema中@connection指令生成的自定义Connection/Edge类型名(如EmployeeConnection)
  • <to>:指定DGS提供的泛型类,XML中需用&lt;和&gt;替代尖括号<>避免语法错误
  • 必须同时映射Connection和Edge类型,否则分页结构会生成不完整

验证效果

配置完成后执行mvn clean compile,生成的DataFetcher类中,getEmployeesByPage方法的返回类型会变为Connection<Employee>,完全符合Netflix DGS Relay分页的要求,不再生成自定义的EmployeeConnection类。

内容的提问来源于stack exchange,提问作者Shamsuddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:33:21