Настраивает ли Hibernate java.util.date (миллисекунды), когда я получаю его из базы данных на основе машинного времени? - PullRequest
2 голосов
/ 06 января 2012

Итак, мы используем Hibernate для объектно-реляционного отображения, и у нас есть Student.java (POJO) и registrationDate (java.util.date).Мы сохраняем объект студента с этой датой '2012-01-05 10:00:00', и когда мы смотрим на БД, он выглядит правильно, когда мы сохраняем его.

Проблема в том, когда мы получаем его из БД (student.getRegistrationDate)вместо того, чтобы возвращать нам правильные миллисекунды по Гринвичу, он возвращает нам измененные миллисекунды, основанные на нашем часовом поясе (наш часовой пояс -3, неправильная дата '2012-01-05 13:00:00').Теперь это не нормальное поведение java.util.date, потому что он не хранит информацию о часовом поясе, поэтому я беспокоюсь, если Hibernate корректирует миллисекунды в объекте даты, чтобы соответствовать местному времени сервера, или это может бытьчто-то другое ?.

Примечание. Я получаю дату, используя date.getTime, а не date.ToString.

Ответы [ 2 ]

0 голосов
/ 07 января 2012

Преобразование происходит с приложением часового пояса. Как вы уже знаете обходной путь. Проверьте это - http://community.jboss.org/wiki/UserTypeForNon-defaultTimeZone.

0 голосов
/ 06 января 2012

Если вы хотите использовать его в качестве метки времени, используйте java.sql.Timestamp вместо java.util.Date (который предполагает время Зулу), что будет правильно заботиться о часовом поясе.

Или вы можете попробовать joda Time, но с Hibernate и JodaTime вам может потребоваться немного поработать, см. это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...