@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 =「TIME ZONE WITH TIMESTAMP」を追加した場合ことを知っていますコラムすなわち
@Column(name = "DATE_DISABLED", columnDefinition= "TIMESTAMP WITH TIME ZONE")
のようなもの、それが正常に動作し、私はそのHibernateはタイムゾーンの列を作成したが、私はこのことを理解している場合、正しくこれが唯一postgreのために働くことになります見ることができていますつまり、明日mysqlにデータベースを変更すると、休止状態になってエラーがスローされます。
私の質問は、これを行う方法です。つまり、タイムゾーンとオフセットを含む列を作成するようにhibernateに指示することです。私は、Javaタイプ "ZonedDateTime"はdeliberetellyでタイムゾーンと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");
}
};
}