从springdoc-openapi-ui版本 1.4.0 开始,我无法再管理 java pojo 继承。我知道 AllOf, OneOf 的概念已在 1.4.0 中添加,但我不知道如何使其工作。
我有一个简单的 pojo,其中包含 X 列表(x 是抽象的)。有两种可能的实现。正确的实现取决于类 X 的属性。
**代码:(类名已重命名)**
两个版本中的 CheeseDTO YAML:
CheeseDTO:
type: object
properties:
cheeseType:
type: string
discriminator:
propertyName: cheeseType
使用springdoc-openapi-ui 1.3.9,我的 yaml 生成如下:
MyDTO:
type: object
properties:
cheeses:
type: array
items:
$ref: '#/components/schemas/CheeseDTO'
通过打开的 openapi-generator-maven-plugin 4.3.0生成 DTO
private List<CheeseDTO> cheeses = null;
使用springdoc-openapi-ui 1.5.4,我的 yaml 生成如下:
MyDTO:
type: object
properties:
cheeses:
type: array
items:
oneOf:
- $ref: '#/components/schemas/SoftCheeseDTO'
- $ref: '#/components/schemas/HardCheeseDTO'
通过打开的 openapi-generator-maven-plugin 4.3.0 生成 DTO(这是我的问题 MyDTOCheesesOneOf 而不是 CheeseDTO)
private List<MyDTOCheesesOneOf> cheeses = null;
Swagger 3 注释:
@Schema(
name = "CheeseDTO",
discriminatorProperty = "cheeseType",
discriminatorMapping = {@DiscriminatorMapping(value = "Brie", schema = SoftCheeseDTO.class),
@DiscriminatorMapping(value = "Banon", schema = SoftCheeseDTO.class),
@DiscriminatorMapping(value = "Cheddar", schema = HardCheeseDTO.class)})
abstract CheeseDTO
private String cheeseType;
@Schema(allOf = {CheeseDTO.class})
SoftCheeseDTO extends CheeseDTO
@Schema(allOf = {CheeseDTO.class})
HardCheeseDTO extends CheeseDTO
OpenAPi 生成器 Maven 插件
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.0</version>
<executions>
<execution>
<id>generateWebQuoteApiClient</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>/definitions/webQuoteApi.yaml</inputSpec>
<generatorName>java</generatorName>
<generateApiDocumentation>false</generateApiDocumentation>
<configOptions>
<library>jersey2</library>
<dateLibrary>java8</dateLibrary>
<java8>true</java8>
<modelPackage>${client.package}.model</modelPackage>
<apiPackage>${client.package}.api</apiPackage>
<invokerPackage>${client.package}.api</invokerPackage>
<performBeanValidation>false</performBeanValidation>
<serializationLibrary>jackson</serializationLibrary>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
有没有办法 List<CheeseDTO>
用springdoc-openapi-ui > 1.4.0 生成一个?我是否必须更改我的招摇注释或更改我的 java 生成器?
**我尝试将生成器插件更新到最新版本,但结果相同
感谢您的帮助大卫