2016-08-05 96 views
0

我使用Java 8,Hibernate 5.1.0.Final和PostgreSQL。我正在考虑将日期时间和时区一起存储到数据库中。Java 8,Hibernate和PostgreSQL - 如何使用时区存储日期?

我已经试过

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "created") 
private Date created; 

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "created") 
private OffsetDateTime created; 

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "created") 
private ZonedDateTime created; 

我用hibernate.hbm2ddl.auto update用于创建表,列等。所有上述选项与timestamp without timezone创建列。如何自动创建timestamp with timezone

在数据库中存储时间和时区的最佳方式是什么?

回答

1

通常情况下,hibernate使用UTC存储日期。然后,您需要将所有时区转换为UTC。

在启动时,

TimeZone.setDefault(TimeZone.getTimeZone("ETC/UTC"));