【发布时间】:2020-01-14 19:50:54
【问题描述】:
我需要在 TIMESTAMP WITH TIMEZONE 类型的 Oracle 列中保存当前 UTC 日期和时间。这是来自带有 JPA 和 Hibernate 的 Spring Boot 服务
我在我的应用程序 yml 中启用了以下功能
jpa:
hibernate:
ddl-auto: none
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.Oracle12cDialect
jdbc:
time_zone: UTC
Entity 类字段看起来像
@Column(name = "last_user_edit_date", columnDefinition = "TIMESTAMP WITH TIME ZONE")
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
private ZonedDateTime lastUserEditDate;
在设置日期时我正在使用
obj.setLastUserEditDate(ZonedDateTime.of(LocalDateTime.now(), ZoneId.of("UTC")));
以上对于实际日期值来说工作正常。唯一的问题是在数据库中它正在保存 UTC 时间,但提到 MST(我的本地时区)作为时区。例如,保存的值是
12-SEP-19 09.50.53.820000000 PM 美国/丹佛
这里的 9.50 PM 实际上是 UTC 时间,但时区是 AMERICA/DENVER。我想要的是
12-SEP-19 09.50.53.820000000 PM UTC
我怎样才能实现这个 Spring JPA 和 Java 8 类?
谢谢
【问题讨论】:
标签: spring oracle spring-boot java-8 spring-data-jpa