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

swagger.yaml :: How to generate properties with "Long" data type and "Timestamp" datatype?

我正在使用 swagger-codegen-maven-plugin 根据 swagger.yaml 规范生成 Java 类。

我在swagger.yaml中添加了一个属性phoneNum如下:

phoneNum:
    type: number

我期待它生成 属性 和 IntegerLong 数据类型。
但它生成为 BigDecimal phoneNum;

根据 swagger docs,提到使用 format: int64

  phoneNum:
    type: number
    format: int64

但是,它最终还是生成了 private BigDecimal phoneNum;

如果你们中的任何人遇到过类似的问题并且有解决方法,请在此处分享。

谢谢。

为了生成 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.util.Date

这是一种将 OffsetDateTime 转换为时间戳的方法

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