2017-10-10 4 views
0

Können Sie LocalDateTime mit einem Spring Boot-Projekt verwenden und wenn ja wie?Spring Boot-Projekt mit LocalDateTime

Ich habe versucht, diese post und fügte die Abhängung und die Zeile in application.properties erforderlich zu folgen, aber ich immer noch:

java.io.StreamCorruptedException: invalid stream header: 32303137 

Wenn Daten persistierenden oder versuchen, vorhandene Daten mit Daten unter Verwendung von java.util erstellt anzuzeigen .Datum.

+0

Sie können 'verwenden java.time' Typen mit jedem PPV-Anbieter, der diese Art unterstützt, und da diese Arten in JPA 2.2 dann jede kompatible JPA 2.2 Provider – DN1

+0

Frühling-boot ist ein meinungs Rahmen Standard sind. Wenn Sie wissen, wie Sie Springboot auf JPA2.2 bekommen, lassen Sie es mich wissen. –

+0

Versuchen Sie das Entfernen von @Temporal (TemporalType.TIMESTAMP) aus Ihren Entitätsfeldern. – Justas

Antwort

1

Ok, also ich habe es zu gehen. Es erforderte mehrere Änderungen, um beide Hibernate & Springboot & Thymeleaf alle mit Java 8 - LocalDateTime arbeiten.

Hibernate

hinzufügen Abhängigkeiten:

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

Fügen Sie die folgenden application.properties:

spring.jackson.serialization.write_dates_as_timestamps=false 

Die Anmerkungen auf meine Entitäten wie folgt aussehen:

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

Obwohl das nicht unbedingt erforderlich war.

Thymeleaf

Abhängigkeit hinzu:

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

Achten Sie darauf, es entspricht Ihrer Thymeleaf Version.

In jedem HTML-Code im Projekt sollten Ihre Datumsfelder nun #Terminals statt #dates verwenden. dh:

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

Frühling Boot

In meiner Application.java Klasse I hinzugefügt:

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

Die folgenden Ressourcen waren von unschätzbarem Wert:

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/ (Hibernate)

+0

Verwenden Sie für einen Date-only-Wert ohne Uhrzeit "LocalDate" anstelle von "LocalDateTime". –

+1

Während ich Ihre breiteren Absichten nicht kenne, möchte ich Sie davor warnen, 'LocalDateTime' für Datum-Uhrzeit-Werte zu verwenden. Diese Klasse fehlt bewusst jedes Konzept der Zeitzone oder Offset-von-UTC. Diese Klasse repräsentiert also * keinen * Moment auf der Timeline, nur eine Reihe potentieller Momente.Wenn Sie einen bestimmten Moment auf der Zeitleiste darstellen möchten, verwenden Sie die anderen java.time-Klassen: 'Instant',' OffsetDateTime' oder 'ZonedDateTime'. –

+0

Ihre Antwort erwähnt Hibernate aber listet Jackson Abhängigkeiten unter diesem auf. Vielleicht fehlt dir in deiner Antwort etwas, das mit dem Winterschlaf zusammenhängt? –

Verwandte Themen