swagger.yaml :: 如何生成具有“Long”数据类型和“Timestamp”数据类型的属性?

7
我正在使用 swagger-codegen-maven-plugin 根据 swagger.yaml 规范生成 Java 类。
我已经在 swagger.yaml 中添加了一个属性 phoneNum,如下所示:
phoneNum:
    type: number

我希望它生成一个使用IntegerLong数据类型的属性。
但它生成了一个BigDecimal phoneNum;

根据Swagger文档,建议使用format: int64

  phoneNum:
    type: number
    format: int64

但是最终还是会生成private BigDecimal phoneNum;

如果有人遇到过类似的问题并且有解决方法,请在这里分享。

谢谢。

1个回答

14
为了生成一个Long属性,您需要使用integer作为类型和int64作为格式。
phoneNum:
    type: integer
    format: int64

看了一下 AbstractJavaCodegen,我认为无法生成 Timestamp 类型的属性。
唯一可用的类型有:

  • org.threeten.bp.LocalDate
  • org.threeten.bp.OffsetDateTime
  • org.joda.time.LocalDate
  • org.joda.time.DateTime
  • java.time.LocalDate
  • java.time.LocalDateTime
  • java.time.OffsetDateTime
  • java.time.Instant(于2019年2月新增)
  • java.util.Date

这里有一种方法可以将 OffsetDateTime 转换为 Timestamp。

OffsetDateTime dateTime = OffsetDateTime.now();
Timestamp timestamp = Timestamp.valueOf(dateTime.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接