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