У меня эти два класса
class Source {
// mapped to TIMESTAMP
@Version
@Column(columnDefinition="TIMESTAMP(3) DEFAULT '2016-01-01'")
Instant myInstant;
}
class Destination {
// mapped to DATETIME
@Basic(optional=true)
Instant myInstant;
}
При использовании Hibernate я назначаю
destination.myInstant = source.myInstant;
а затем сохраненное значение меньше на один час, чем оригинал - как в соответствии с командной строкой MySQL-клиента, так и на Java. Мой текущий часовой пояс - UTC + 1, поэтому причиной является, очевидно, изменение часового пояса.
Есть несколько мест, где это можно исправить, но я ищу наилучшую практику. Сервер должен работать по всему миру, поэтому он должен продолжать использовать UTC внутренне, не так ли?
Должен ли я просто изменить тип столбца на TIMESTAMP
? Затем, почему Instant
по умолчанию сопоставляется с DATETIME
?
Согласно в этой статье, Instant
отображается на TIMESTAMP
, но в моем случае это не так. Почему?