swagger.yaml :: Как создать свойства с типом данных «Long» и типом «Timestamp»? - PullRequest
0 голосов
/ 10 ноября 2018

Я использую swagger-codegen-maven-plugin для генерации классов Java на основе swagger.yaml spec.

Я добавил свойство phoneNum в swagger.yaml, как показано ниже:

phoneNum:
    type: number

Я ожидаю, что оно сгенерирует свойство с типом данных Integer или Long.
Но оно было сгенерировано как BigDecimal phoneNum;

В соответствии с документами о чванстве было упомянуто использование format: int64

  phoneNum:
    type: number
    format: int64

Но, тем не менее, он генерирует private BigDecimal phoneNum;

Если кто-то из вас сталкивался с подобной проблемой и имеет обходной путь, пожалуйста, поделитесь им здесь.

Спасибо.

1 Ответ

0 голосов
/ 10 ноября 2018

Чтобы создать свойство 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 в Timestamp

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