使用LocalDateTime的Spring启动项目

时间:2017-10-10 01:38:28

标签: java hibernate jpa spring-boot jackson

你可以将LocalDateTime与Spring Boot项目一起使用吗?如果是这样的话?

我尝试遵循此post并添加了application.properties中所需的依赖性和行,但我仍然得到:

java.io.StreamCorruptedException: invalid stream header: 32303137

持久化数据或尝试使用Java.Util.Date创建的日期查看现有数据。

1 个答案:

答案 0 :(得分:1)

好的,所以我明白了。它需要进行多项更改才能使Hibernate和amp; Springboot& Thymeleaf都使用Java 8 - LocalDateTime。

<强>休眠

添加依赖项:

compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")
compile group: 'org.hibernate', name: 'hibernate-java8'

将以下内容添加到application.properties:

spring.jackson.serialization.write_dates_as_timestamps=false

我的实体上的注释如下:

@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
private LocalDateTime somedate;

虽然这似乎并非严格需要。

<强> Thymeleaf

添加依赖:

compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-java8time', version: '3.0.0.RELEASE'

确保它符合您的Thymeleaf版本。

在项目的任何HTML中,您的日期字段现在应使用#temporals而不是#dates。即:

<td th:text="${#temporals.format(object.somedate, 'yyyy-MM-dd HH:mm')}">12/12/2018</td>

春季启动

在我的Application.java类中,我添加了:

@Bean
public Java8TimeDialect java8TimeDialect() {
    return new Java8TimeDialect();
}

以下资源非常宝贵:

http://blog.codeleak.pl/2015/11/how-to-java-8-date-time-with-thymeleaf.html#comment-form(Thymeleaf / Springboot)

https://www.thoughts-on-java.org/hibernate-5-date-and-time/(休眠)