在我的实体类中,我用于定义时间字段,如下所示:
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "START_DATE")
private Date start;
在我的oracle DB中,这些字段映射的列是type TIMESTAMP
。
此配置的含义是什么:
我的日期是否隐式为UTC日期?
这是否意味着我必须谨慎处理夏时制问题?
JPATemporalType.TIMESTAMP
对应于JDBCjava.sql.Timestamp
类型,而JDBC类型又对应于Oracle(和SQL标准)TIMESTAMP [ WITHOUT TIME ZONE ]
类型。尽管JDBC 4.2(Java 8)也增加了对它的支持OffsetDateTime
,但Java EE 7TemporalType
尚不存在。
这意味着您的值没有附加任何时区,时间戳的语义是“本地时区”的语义,无论配置为什么。当然,您必须当心“本地时区”可能不同的服务器(数据库)和客户端(运行Java应用程序的机器)!
如果您确定客户端和服务器时区设置为UTC ,则可以实现所需的行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句