Hibernate返回不同​​的时间戳

时间:2016-08-31 11:56:29

标签: java postgresql hibernate timestamp debian

我们正在使用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>

2 个答案:

答案 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