【发布时间】:2017-12-04 17:41:06
【问题描述】:
我正在使用 Spring Boot 1.5.4、Spring Data REST、HATEOAS、Hibernate 5.2.10Final。 我正在使用 Spring Data REST 公开存储库,它工作正常。
我的模型 bean 扩展了这个类:
@TypeDefs({ @TypeDef(name = "json", typeClass = JsonStringType.class), @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class) })
@EntityListeners({ AuditingEntityListener.class })
@MappedSuperclass
@Audited
public abstract class AbstractEntity extends AbstractPersistable<Long> {
private static final long serialVersionUID = 1L;
/* "UUID" and "UID" are Oracle reserved keywords -> "sid" */
@Column(name = "sid", unique = true, nullable = false, updatable = false, length = 36)
private String sid;
@CreatedBy
private String createdBy;
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@LastModifiedBy
private String lastModifiedBy;
// Trick to start version counting from 1 instead of 0
@Version
private long version = 1;
如您所见,我使用的是 JDK 8 LocalDateTime。在我的 pom.xml 中,我也在使用:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
事实上,REST 回复以正确的方式序列化:
{
"sid": "2b2530a4-6cc7-41a0-a7b5-9bf0466223b4",
"createdDate": "2017-06-30T19:12:44",
"lastModifiedDate": "2017-06-30T19:12:44",
"lastModifiedBy": null,
"name": "Administrator",
"landlinePhone": null,
"mobilePhone": null,
"username": "admin",
"email": "admin@email.com",
"timeZone": "Europe/Rome",
"cashFund": 0,
"enabled": true,
"roles": [
"Amministratore"
],
"activeWorkSession": null,
"new": false
}
由于这些属性,我将日期时间以 UTC 格式存储在数据库中,并且工作正常:
spring.datasource.url=jdbc:mysql://localhost:3306/buslet?useLegacyDatetimeCode=false&serverTimezone=UTC&useSSL=true
spring.jpa.hibernate.jdbc.time_zone = UTC
我希望我的 REST 端点以 UTC 格式返回日期时间,但不幸的是它不起作用。 我必须指定我的 JDK 正在使用系统默认语言环境(欧洲/罗马),并且我设置了这些应该可以解决问题的属性...
spring.jackson.time-zone=UTC
spring.jackson.deserialization.adjust_dates_to_context_time_zone=false
不幸的是,它不起作用。我错过了什么吗?
【问题讨论】:
标签: spring hibernate spring-mvc spring-boot spring-data-rest