简体   繁体   English

未找到请求操作的编解码器:[日期 <-> java.util.Date]

[英]Codec not found for requested operation: [date <-> java.util.Date]

In Cassandra a column type is set to Date and in Model class type of field is set to java.util.Date with getters and setters.在 Cassandra 中,列类型设置为 Date,在 Model 类中,字段类型设置为 java.util.Date,并带有 getter 和 setter。 During com.datastax.driver.mapping.Mapper.save I get the following exception:com.datastax.driver.mapping.Mapper.save我得到以下异常:

Codec not found for requested operation: [date <-> java.util.Date]

Caused by: com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [date <-> java.util.Date]
at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:56)
at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:25)
at com.datastax.driver.mapping.DriverThrowables.propagateCause(DriverThrowables.java:41)
at com.datastax.driver.mapping.Mapper.save(Mapper.java:272)

Found the following during Google search:在 Google 搜索过程中发现以下内容:

DATE      <-> com.datastax.driver.core.LocalDate : use getDate()

You must convert java.util.Date to com.datastax.driver.core.LocalDate您必须将 java.util.Date 转换为com.datastax.driver.core.LocalDate

Example:例子:

 LocalDate localDate = LocalDate.fromMillisSinceEpoch(date.getTime());

I was facing the same issue with using timestamp我在使用时间戳时遇到了同样的问题

reactor.core.Exceptions$ErrorCallbackNotImplemented: com.datastax.oss.driver.api.core.type.codec.CodecNotFoundException: Codec not found for requested operation: [TIMESTAMP <-> java.util.Date]
Caused by: com.datastax.oss.driver.api.core.type.codec.CodecNotFoundException: Codec not found for requested operation: [TIMESTAMP <-> java.util.Date]
    at com.datastax.oss.driver.internal.core.type.codec.registry.CachingCodecRegistry.createCodec(CachingCodecRegistry.java:609) ~[java-driver-core-4.9.0.jar:na]
    at com.datastax.oss.driver.internal.core.type.codec.registry.DefaultCodecRegistry$1.load(DefaultCodecRegistry.java:95) ~[java-driver-core-4.9.0.jar:na]
    at com.datastax.oss.driver.internal.core.type.codec.registry.DefaultCodecRegistry$1.load(DefaultCodecRegistry.java:92) ~[java-driver-core-4.9.0.jar:na]

Starting with driver 4.0, the CQL type timestamp is not mapped to java.util.Date anymore, but to java.time.Instant .从驱动程序 4.0 开始,CQL 类型的时间戳不再映射到java.util.Date ,而是映射到java.time.Instant Using Instant worked for me.使用 Instant 对我有用。

在实体类中将 Date 类型替换为 LocalDate 类型:-

private LocalDate createdDate;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM