- У меня есть таблица в oracle db. Таблица содержит столбец last_updt_dt с типом данных Date.
Я использую данные весны jpa с версией hibernate 5.3.12 final. Класс сущности для таблицы содержит поле даты, как показано ниже
@ Column (name = "last_updt_dt") private LocalDateTime lastUpdtDt;
Если я вставлю дату через свое приложение и получу это, то это показывает ожидаемое поведение. Например, в базе данных он показывает следующее значение (в 24-часовом формате)
28-04-2020 00: 32: 02
и в приложении, если мой часовой пояс сервера равен AEST, тогда он показывает указанное выше значение как
2020-04-28T10:32:02
, что является правильным (значение ut c в дБ и значение AEST, полученные в моем приложении, совпадают правильно)
Но у меня есть несколько существующих записей в той же таблице базы данных. Если я пытаюсь получить эти записи, тогда в моем приложении дата показывает неправильное значение. Например, таблица базы данных показывает следующее значение (в 24-часовом формате)
11-01-2017 09: 36: 34
и в приложении, если мой сервер часовой пояс AEST, тогда он показывает вышеуказанное значение как
2017-01-11T20:36:34
, если я конвертирую это время ut c время 09:36:34 в время AEST, то это дает мне время как 19:36:34 и то, что я вижу здесь, это 20:36:34, что на один час больше.
Итак, я не могу понять поведение:
- Если я вставлю дату из своей весенней загрузки приложение и получить его, дата, введенная в дБ, совпадает с датой, возвращенной jpa
- , но если я попытаюсь прочитать дату, которая не вставлена моим приложением, которая уже присутствует в дБ, то дата возвращается по jpa не совпадает со значением в db, фактически показывает мне дополнительный час по сравнению с ожидаемым значением. Это происходит для всех существующих значений даты в этой таблице. (не тот, который был введен моим приложением весенней загрузки)
Кто-нибудь имеет какие-либо подсказки об этом поведении?
Мое приложение создано с использованием jhipster 6.4.1, и я заметил, что есть Класс DateTimeFormatConfiguration, содержащий следующий метод
@Override
public void addFormatters(FormatterRegistry registry) {
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setUseIsoFormat(true);
registrar.registerFormatters(registry);
}
Не уверен, играет ли это какую-либо роль.