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

如何让OpenAPI生成未被引用的DTO类?以BDto未生成为例

解决OpenAPI生成未引用DTO的问题

你的问题是OpenAPI生成器仅会生成被接口直接/间接引用的DTO,像BDto这种继承了ADto但未被任何接口直接引用的类就不会被生成,以下是几种可行的解决办法:

方法1:利用Discriminator映射(适配继承场景)

你的ADto已经定义了discriminator字段,直接把BDto添加到该字段的mapping中,生成器会自动识别它是ADto的子类,即便没有被接口直接引用也会生成对应的代码。修改后的ADto配置如下:

ADto:
  type: object
  properties:
    id:
      type: integer
      format: int64
    discriminator:
      type: string
  discriminator:
    propertyName: discriminator
    mapping:
      bDto: '#/components/schemas/BDto'

方法2:修改生成器全局配置

如果使用的是OpenAPI Generator,可以在生成命令里添加--generate-all-schemas参数,或者在构建插件配置中设置generateAllSchemas=true,以Maven插件为例:

<plugin>
  <groupId>org.openapitools</groupId>
  <artifactId>openapi-generator-maven-plugin</artifactId>
  <version>对应版本号</version>
  <executions>
    <execution>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
        <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec>
        <generatorName>java</generatorName>
        <generateAllSchemas>true</generateAllSchemas>
      </configuration>
    </execution>
  </executions>
</plugin>

这个配置会强制生成components/schemas下定义的所有DTO,无论是否被接口引用。

方法3:给未引用Schema添加扩展标记

部分生成器支持通过扩展字段强制生成未引用的Schema,比如OpenAPI Generator可以给BDto添加x-codegen-ignore: false标记:

BDto:
  x-codegen-ignore: false
  type: object
  allOf:
    - $ref: '#/components/schemas/ADto'
    - type: object
      properties:
        value:
          type: number
          format: double

结合你的继承场景,方法1是最贴合规范的解决方案,既能明确类的继承关系,又能让生成器正确识别并生成子类DTO。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:03:27