首页 > 解决方案 > openapi-generator:java代码生成器,不生成鉴别器属性

问题描述

我正在使用 openapi-generator(5.0.0) 从 openapi.yaml 生成代码。Java 代码是用jaxrs-jersey生成器生成的。

我有一个非常简单的带有鉴别器属性的继承结构。

...
    Cat:
      type: object
      allOf:
      - $ref: '#/components/schemas/Pet'
    Dog:
      type: object
      allOf:
      - $ref: '#/components/schemas/Pet'
    Pet:
      required:
      - objectType
      type: object
      properties:
        objectType:
          type: string
      discriminator:
        propertyName: objectType
...

当我从中生成java代码时,我得到

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "objectType", visible = true)
@JsonSubTypes({ @JsonSubTypes.Type(value = Cat.class, name = "Cat"), @JsonSubTypes.Type(value = Dog.class, name = "Dog"), })
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaJAXRSSpecServerCodegen")
public class Pet {

    private @Valid String objectType;

    /**
     */
    public Pet objectType(String objectType) {
        this.objectType = objectType;
        return this;
    }

    @ApiModelProperty(required = true, value = "")
    @JsonProperty("objectType")
    @NotNull
    public String getObjectType() {
        return objectType;
    }

    public void setObjectType(String objectType) {
        this.objectType = objectType;
    }

    //....
}

对于 java 代码,对象的运行时类型是已知的,并且objectType属性包含冗余信息。更糟糕的是,如果我忘记正确初始化它,则类信息不会序列化为 json。

我怎样才能摆脱objectType财产?

(注意:我还生成了实际需要鉴别器属性的打字稿代码)

标签: openapi-generator

解决方案


推荐阅读