gpt4 book ai didi

java - OffsetDateTime 与 Spring Data Couchbase

转载 作者:行者123 更新时间:2023-11-30 02:53:54 25 4
gpt4 key购买 nike

我正在使用 Spring Data Couchbase 创建 POC,但在使用新的 Java 8 DateTime 库时遇到了一个小问题。我希望使用 ISO-8601 日期保存和读取我的内容。我正在使用 OffsetDateTime 捕获带有时区偏移的完整时间戳。保存文档时我没有任何问题。但是,当从数据库读取它时,我收到映射异常。我也使用 JSR-310 依赖项来配置 jackson 解析。

使用 OffsetDateTime 是正确的方法吗?我应该回退并只使用 Joda 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",
...
}

读取时(异常(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"
}

最佳答案

目前似乎不支持 OffsetDateTime 和 ZoneDateTime。作为解决方法,您可以通过以下配置使用 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",
...
}

关于java - OffsetDateTime 与 Spring Data Couchbase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37820654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com