Настройка
- Веб-приложение запускается на компьютере A с системным временем, установленным на GMT
- База данных Oracle работает на компьютере B с системным временем, установленным на GMT. (выберите dbtimezone из двух шоу +0: 00)
Проблема
Веб-приложение использует Hades JPA и Hibernate для записи и чтения из БД. В таблице есть два столбца типа timestamp с именами CREATED и MODIFIED. Веб-приложения используют joda DateTime, чтобы получить объект java.util.Date и записать его в БД. Все хорошо при первом создании записи, оба поля имеют время, установленное в GMT. Но как только эта же строка обновляется, столбец MODIFIED устанавливается в PST.
Это тот же раздел кода, который выполняется для установки значений даты во время создания, а также во время модификации (он пытается получить java.util.Date из joda DateTime, как упомянуто выше).
Может кто-нибудь объяснить это поведение?
Еще одна вещь, которую я заметил, - в приведенной выше настройке, если в веб-приложении я устанавливаю столбец даты, используя new Date (), он устанавливает его в PST. Я не знаю, откуда взялся часовой пояс PST, когда приложение и БД работают на машинах, настроенных на GMT.
РЕДАКТИРОВАТЬ: TimeZone.getDefault () печатает GMT на обеих машинах.