Я реализовал LocalDateTime в java, но когда я запускаю приложение на двух серверах, оно возвращает JSON datetime в виде строки на сервере liberty, а на сервере Websphere datetime возвращается как объект, а не строка. Есть ли решение для этого, у меня есть этот datetime в БД: 2001-11-12 17: 18: 19.123456 . Ниже приведен код:
@Converter(autoApply = true)
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime locDateTime) {
return locDateTime == null ? null : Timestamp.valueOf(locDateTime);
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
return sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime();
}
}
public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
private static DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
@Override
public LocalDateTime unmarshal(String string) throws Exception {
synchronized (FORMATTER) {
return LocalDateTime.parse(string, FORMATTER);
}
}
@Override
public String marshal(LocalDateTime localDateTime) throws Exception {
synchronized (FORMATTER) {
return localDateTime.format(FORMATTER);
}
}
}
//Entity looks like this
@Column(name = "date_time")
@Convert(converter = LocalDateTimeAttributeConverter.class)
private LocalDateTime startDate;
//The DTO looks like this
@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
private LocalDateTime startDate;
//Websphere returns
startDate: {year: 2001, monthValue: 12, month: "DECEMBER", dayOfMonth: 12, dayOfYear: .., …}
//instead of
"2001-11-12 17:18:19.123456"
Как это можно исправить?