【问题标题】:How to format a LocalDateTime field in a POJO persisted to a BLOB如何格式化 POJO 中的 LocalDateTime 字段持久化到 BLOB
【发布时间】:2020-11-29 07:35:16
【问题描述】:

我有一个 POJO,我以 JSON 格式存储在 MySQL 数据库表的 BLOB 列中。有问题的 POJO 有一个 LocalDateTime 字段,每当我将数据保存到列时,LocalDateTime 字段采用this question 中描述的格式,而我希望它以 yyyy-MM-dd hh 格式表示:毫米:ss

我已尝试实施链接帖子中建议的解决方案,但都没有奏效。我的猜测是,这与该字段是 BLOB 中 POJO 的一部分这一事实有关,而不是传统的 Timestamp 字段。

这是我的 POJO 的代码

public class MyPOJO {

    private Long id;

    @JsonFormat(pattern="yyyy-MM-dd")
    @DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
    private LocalDateTime dateTime;

    private String someText;

    //Constructors

    //Getters and setters

}

欢迎提出任何意见。

这是当前的 JSON 输出:

{
"id" : 1,
"dateTime" : {
    "year" : 2010,
    "month" : "JANUARY",
    "dayOfMonth" : 1,
    "dayOfWeek" : "FRIDAY",
    "dayOfYear" : 1,
    "monthValue" : 1,
    "hour" : 2,
    "minute" : 2,
    "second" : 0,
    "nano" : 0,
    "chronology" : {
      "id" : "ISO",
      "calendarType" : "iso8601"
    }
  }, 
  "someText": "someText"
}

【问题讨论】:

  • 只需在字段上使用@JsonFormat(pattern="yyyy-MM-dd") 即可,它应该可以工作。确保您发送准确的 MyPOJO 对象作为响应

标签: java mysql json spring-boot localdatetime


【解决方案1】:

您的案例的正确注释应该是:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss")
    private LocalDateTime dateTime;

可以在此处找到描述此解决方案的完整问题:Spring Data JPA - ZonedDateTime format for json serialization。而且,你为什么要把你的 POJO 持久化到 BLOB 中呢?至少,使用 CLOB(BLOB 代表 Binary Large OBject,CLOB 代表 C角色Large OBject)。但实际上,您可能应该考虑 VARCHAR2 字段在大多数情况下应该足够了。

【讨论】:

    【解决方案2】:

    我认为您应该使用@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss"),因为您还需要这些时间价值。如果没有替换为 LocalDate 并保留您当前的正则表达式格式。

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 1970-01-01
      • 2017-06-17
      • 2021-12-19
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多