带有 LocalDateTime 的 Spring Boot 项目
Posted
技术标签:
【中文标题】带有 LocalDateTime 的 Spring Boot 项目【英文标题】:Spring boot project with LocalDateTime 【发布时间】:2018-03-21 07:25:48 【问题描述】:你可以在 Spring Boot 项目中使用 LocalDateTime 吗?如果可以,如何使用?
我尝试关注此post 并添加了依赖关系和 application.properties 中所需的行,但我仍然得到:
java.io.StreamCorruptedException: invalid stream header: 32303137
在持久化数据或尝试查看具有使用 Java.Util.Date 创建的日期的现有数据时。
【问题讨论】:
您可以将java.time
类型与支持这些类型的任何 JPA 提供程序一起使用,并且由于这些类型在 JPA 2.2 中是标准的,因此任何兼容的 JPA 2.2 提供程序
Spring-boot 是一个自以为是的框架。如果您知道如何让 Springboot 进入 JPA2.2,请告诉我。
尝试从您的实体字段中删除 @Temporal(TemporalType.TIMESTAMP)。
【参考方案1】:
好的,所以我开始了。它需要多次更改才能使 Hibernate、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;
虽然这似乎不是严格需要的。
百里香
添加依赖:
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/(休眠)
【讨论】:
对于没有时间的仅日期值,请使用LocalDate
而不是 LocalDateTime
。
虽然我不知道你更广泛的意图,但让我提醒你不要使用 LocalDateTime
作为日期时间值。该类故意缺少任何时区或与 UTC 偏移的概念。所以那个类不代表时间线上的一个时刻,只是一个潜在时刻的范围。如果您要表示时间轴上的特定时刻,请使用其他 java.time 类:Instant
、OffsetDateTime
或 ZonedDateTime
。
您的答案提到了休眠,但在其下列出了杰克逊依赖项。也许您在答案中遗漏了与休眠相关的内容?以上是关于带有 LocalDateTime 的 Spring Boot 项目的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 1.4:LocalDateTime 映射到 varbinary 而不是时间戳类型
在 Spring Boot 和 ElasticSearch 中使用 Instant、LocalDateTime 和 ZonedDateTime
spring-rest接口LocalDateTime转时间戳
spring-rest接口LocalDateTime转时间戳