【问题标题】:Spring boot project with LocalDateTime带有 LocalDateTime 的 Spring Boot 项目
【发布时间】: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)。

标签: java hibernate jpa spring-boot jackson


【解决方案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 类:InstantOffsetDateTimeZonedDateTime
  • 您的答案提到了休眠,但在其下列出了杰克逊依赖项。也许您在答案中遗漏了与休眠相关的内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2017-06-03
  • 2017-05-31
  • 1970-01-01
  • 2017-03-08
  • 2019-05-19
  • 2019-04-21
相关资源
最近更新 更多