Как отформатировать поле LocalDateTime в POJO, сохраняемом в BLOB

У меня есть POJO, в котором я храню JSON формат в BLOBстолбец в таблице базы данных MySQL. У рассматриваемого POJO естьLocalDateTime поле, и всякий раз, когда я сохраняю данные в столбце, LocalDateTimeполе принимает формат, описанный в этом вопросе, тогда как я хотел бы, чтобы оно было представлено в формате гггг-ММ-дд чч: мм: сс

Я попытался реализовать решения, предложенные в связанном сообщении, но ни одно из них не сработало. Я предполагаю, что это как-то связано с тем, что поле является частью POJO вBLOB в отличие от традиционного 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"
}

2 ответа

Правильная аннотация для вашего случая должна быть:

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

Полный вопрос, описывающий это решение, можно найти здесь: Spring Data JPA - формат ZonedDateTime для сериализации json. Но также, почему вы сохраняете свой POJO в BLOB? по крайней мере, использование CLOB (BLOB означает Б Инара л АРГ OB Ject, а CLOB обозначает С haracter л АРГ О.Б. Ject). Но на самом деле вам, вероятно, следует рассмотреть поле VARCHAR2, которого должно хватить в большинстве, если не во всех случаях.

Я думаю, тебе стоит использовать @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")потому что вам также нужна эта временная стоимость. если нет, замените на LocalDate и оставьте текущий формат регулярного выражения.

Другие вопросы по тегам