Ich erstelle eine POC mit Spring Data Couchbase und läuft in ein kleines Problem mit den neuen Java 8 DateTime-Bibliotheken. Ich möchte, dass meine Inhalte mit ISO-8601-Daten gespeichert und gelesen werden. Ich verwende OffsetDateTime, um den vollständigen Zeitstempel mit Zeitzonenversatz zu erfassen. Beim Speichern eines Dokuments habe ich keine Probleme. Beim Lesen von der DB erhalte ich jedoch eine Mapping-Ausnahme. Ich verwende die JSR-310-Abhängigkeit, um auch das jackson-Parsing zu konfigurieren.OffsetDateTime mit Spring Data Couchbase
Ist OffsetDateTime der richtige Ansatz? Soll ich zurückfallen und einfach Joda DateTime benutzen?
POM Abhängigkeiten:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-couchbase</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.6.1</version>
</dependency>
Dokument Java-Klasse:
@Document
public class Content {
@Id
private Long id;
@CreatedDate
private OffsetDateTime createdDate;
...
}
Anwendung YML:
spring:
jackson:
deserialization:
adjust_dates_to_context_time_zone: false
serialization:
write_dates_as_timestamps: false
date-format: yyyy-MM-dd'T'HH:mm:ss.SSSZ
Auf Save (Keine Ausgabe):
{
...
"createdDate": "2016-06-14T15:25:27.746-04:00",
...
}
On Read (Exception):
{
"timestamp": "2016-06-14T19:26:08.290+0000",
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.data.mapping.model.MappingException",
"message": "No property null found on entity class java.time.OffsetDateTime to bind constructor parameter to!",
"path": "/v1/content/a7d078f1-a0d5-4ec1-89f5-149d850aa372"
}