Java payara服务器托管的eclipselink日期提前一小时从postgres读取

Java payara服务器托管的eclipselink日期提前一小时从postgres读取,java,postgresql,glassfish,payara,Java,Postgresql,Glassfish,Payara,我正在尝试从postgres数据库读取时间戳值。 我尝试了各种映射,目前正在使用以下映射: @Column(name = "Anlagedatum") private Timestamp anlagedatum; 如果我使用SQL查询数据库,我会得到第一个日期的,2015-02-27 如果我在本地机器上使用scratch.java执行JPA代码,我会得到2015-02-27 当在我的本地Payara服务器的上下文中执行完全相同的查询时,我得到的日期不正确。真正有趣的是我的时区是GMT+2,而

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

@Column(name = "Anlagedatum")
private Timestamp anlagedatum;
如果我使用SQL查询数据库,我会得到第一个日期的,
2015-02-27

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

当在我的本地Payara服务器的上下文中执行完全相同的查询时,我得到的日期不正确。真正有趣的是我的时区是GMT+2,而不是+1

payara服务器返回的日期为
2015-02-26 23:00:00

payara server JPA为什么要更改日期?
如何更改映射,使其在不进行操作的情况下获得存储的日期


这看起来像是时区中夏令时的问题

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

如果已经出现这种情况,您可以尝试以下方法:

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
@Column(name = "Anlagedatum")
private Timestamp anlagedatum;
如果这没有帮助,我会尝试使用Java中的“Date”类型:

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

看起来像是夏季问题?@unwichtich谢谢-但问题仍然存在-我如何解决它?正是因为应用程序和数据库之间的时区变化,我们决定在数据库中以ISO字符串的形式存储日期和时间。ISO格式可以很容易地索引和排序,并且从数据库传输时时间不会改变。尽管它只在数据和应用程序位于同一时区时才起作用。