我们正在使用hibernate 4.3.0.Final从postgresql 9.4中检索信息。当我们通过pgadmin查询数据库时,我们看到表条目稳定,但是当我们通过hibernate执行相同的查询时,我们会得到时间戳来回3小时。我们的数据库保留时区没有时区,我们位于+3时区。我们无法理解为什么hibernate会更改时间戳,即使它在我们使用本机查询时也会发生。
注意:我们使用的是Debian Jessie 8和Tomcat 8
表:
uid serial NOT NULL
time timestamp without time zone NOT NULL
type smallint NOT NULL
pom conf:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.0.Final</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
答案 0 :(得分:2)
Your jvm has timezone +3, try to
TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
But it's a quick hack,you can do the timezone coverting at your dao layer
答案 1 :(得分:2)
Hibernate使用“JVM时区”进行日期表示。如果未明确设置,则JVM使用操作系统上设置的时区。 您可以使用参数
告诉您的JVM在启动时使用哪个时区 -Duser.timezone=UTC
。