hibernate 5 + ZonedDateTime + postgresql включает часовой пояс и смещение
У меня работает приложение весенней загрузки 1.3 + Hibernate 5 + Java 8 + ZonedDateTime + postgresql и в одной из таблиц у меня есть следующие поля.
@Column(name = "DATE_ENABLED")
@Type(type="java.time.ZonedDateTime")
private ZonedDateTime dateEnabled;
@Column(name = "DATE_DISABLED")
@Type(type="java.time.ZonedDateTime")
private ZonedDateTime dateDisabled;
Если я запускаю приложение, то вижу, что это по умолчанию создает «метку времени без часового пояса»
testDB=# \d type
Table "public.type"
Column | Type | Modifiers
--------------------------------+-----------------------------+-----------
type_id | bytea | not null
date_disabled | timestamp without time zone |
date_enabled | timestamp without time zone |
Я знаю, что если я добавлю columnDefinition = "TIMESTAMP WITH TIME ZONE" в столбец, то есть что-то вроде
@Column(name = "DATE_DISABLED", columnDefinition= "TIMESTAMP WITH TIME ZONE")
тогда он работает правильно, и я вижу, что hibernate создал столбец с часовым поясом, но если я правильно понимаю, это будет работать только для postgres, т.е. если я завтра изменю базу данных на mysql, то hibernate выдаст ошибку.
Таким образом, мой вопрос заключается в том, как сделать это в общем, то есть, чтобы указать hibernate создать столбец, который должен включать часовой пояс и смещение. Я придерживался мнения, что, поскольку java-тип "ZonedDateTime" специально создан для включения часового пояса и временного смещения в UTC, то в спящем режиме по умолчанию будет создан столбец, включающий часовой пояс. Таким образом, снова возникает вопрос: как правильно указать спящий режим, чтобы включить часовой пояс и смещение.
Вот части моего пом:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
<hibernate.version>5.0.4.Final</hibernate.version>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>${hibernate.version}</version>
</dependency>
и мой файл свойств, показывающий диалект
@Bean
public Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
setProperty("hibernate.chach.provider_class", "org.hibernate.cache.NoCacheProvider");
setProperty("hibernate.show_sql", "true");
setProperty("hibernate.hbm2ddl.auto", "create-drop");
}
};
}