Как отформатировать поле 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 и оставьте текущий формат регулярного выражения.