Как сохранить дату / время и временные метки в часовом поясе UTC с JPA и Hibernate - PullRequest
91 голосов
/ 03 февраля 2009

Как я могу настроить JPA / Hibernate для сохранения даты / времени в базе данных в качестве часового пояса UTC (GMT)? Рассмотрим эту аннотированную сущность JPA:

public class Event {
    @Id
    public int id;

    @Temporal(TemporalType.TIMESTAMP)
    public java.util.Date date;
}

Если дата - 9 февраля 2008 г. - 9:30 утра по тихоокеанскому стандартному времени (PST), то я хочу, чтобы в базе данных сохранялось время по Гринвичу, 2008 г., 3 февраля - 17:30. Аналогично, когда дата извлекается из базы данных, я хочу, чтобы она интерпретировалась как UTC. Таким образом, в этом случае 5:30 вечера - это 5:30 вечера UTC. Когда он отображается, он будет отформатирован как 9:30 утра по тихоокеанскому времени.

Ответы [ 11 ]

1 голос
/ 08 декабря 2010

Hibernate не позволяет указывать часовые пояса с помощью аннотаций или любых других средств. Если вы используете Календарь вместо даты, вы можете реализовать обходной путь, используя свойство AccessType HIbernate и реализуя сопоставление самостоятельно. Более сложное решение - реализовать пользовательский тип пользователя для сопоставления даты или календаря. Оба решения объясняются в этом сообщении: http://dev -metal.blogspot.com / 2010/11 / mapping-date-and-time-zone-with.html

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