2016-06-14 4 views
1

私はSpring Data Couchbaseを使用してPOCを作成しており、新しいJava 8 DateTimeライブラリでわずかな問題が発生しています。 ISO-8601の日付で私のコンテンツを保存して読んでほしいです。 OffsetDateTimeを使用して、タイムゾーンオフセット付きの完全なタイムスタンプをキャプチャしています。文書を保存するときに問題はありません。しかし、それをDBから読み込むと、マッピング例外が発生します。私はJSR-310依存関係を使ってjackson解析も設定しています。Springデータを使用したOffsetDateTime Couchbase

OffsetDateTimeを適切な方法で使用していますか?私は戻ってちょうどジョーダDateTimeを使用する必要がありますか?

POM依存性:

<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> 

ドキュメントJavaクラス:

@Document 
public class Content { 

    @Id 
    private Long id; 

    @CreatedDate 
    private OffsetDateTime createdDate; 
... 
} 

アプリケーション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 

{ 
    ... 
    "createdDate": "2016-06-14T15:25:27.746-04:00", 
    ... 
} 
読む(例外)で

:OffsetDateTimeとZoneDateTimeが、現時点ではサポートされていないよう

{ 
    "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" 
} 

答えて

2

が見えます。この問題を回避するには、以下の設定でJoda DateTimeを使用することができます。

POM依存性:

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-couchbase</artifactId> 
    <version>2.1.1.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>joda-time</groupId> 
    <artifactId>joda-time</artifactId> 
    <version>2.9.4</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-joda</artifactId> 
    <version>2.7.4</version> 
</dependency> 

ドキュメントJavaクラス:

@Document 
public class Content { 

    @Id 
    private Long id; 

    @CreatedDate 
    private DateTime createdDate; 
... 
} 

アプリケーション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 

{ 
    ... 
    "createdDate": "2016-06-14T21:55:23.258+0000", 
    ... 
} 

オン読み取り:

{ 
    ... 
    "createdDate": "2016-06-14T21:55:23.258+0000", 
    ... 
} 
関連する問題