代码之家  ›  专栏  ›  技术社区  ›  Jim

Payara服务器托管的EclipseLink日期提前一小时从Postgres读取

  •  0
  • Jim  · 技术社区  · 8 年前

    我试图从postgres数据库中读取时间戳值。 我尝试了各种映射,目前我正在使用以下映射:

    @Column(name = "Anlagedatum")
    private Timestamp anlagedatum;
    

    如果我使用sql查询数据库,我会得到, 第一次约会 2015-02-27 .

    enter image description here

    如果我在本地机器上使用scratch.java执行jpa代码,就会得到 2015-02-27

    当完全相同的查询在 我当地的帕亚拉 服务器,我得到一个错误的日期。最重要的是我的时区是GMT+2, 不超过1 .

    Payara服务器返回的日期是 2015-02-26 23:00:00

    enter image description here

    为什么Payara服务器JPA会更改日期?
    如何更改映射以使其在不进行操作的情况下获得存储的日期?

    1 回复  |  直到 8 年前
        1
  •  0
  •   unwichtich    8 年前

    这看起来像是你时区的夏令时有问题。

    首先要检查的是您在postgresql数据库中使用的列类型。
    您应该使用:“带时区的时间戳”;

    如果已经是这种情况,您可以尝试以下操作:

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    @Column(name = "Anlagedatum")
    private Timestamp anlagedatum;
    

    如果这无济于事,我会用Java中的“日期”类型来尝试它:

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    @Column(name = "Anlagedatum")
    private Date anlagedatum;
    
    推荐文章