codecontfoundexception:找不到请求操作的编解码器:[date< ->java.util.date]

j91ykkif  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(387)

我使用的是java8的以下版本

<dependency>
      <groupId>com.datastax.cassandra</groupId>
      <artifactId>cassandra-driver-core</artifactId>
      <version>3.7.2</version>
    </dependency>

    <dependency>
      <groupId>com.datastax.cassandra</groupId>
      <artifactId>cassandra-driver-mapping</artifactId>
      <version>3.7.2</version> 
    </dependency>

我的表有一个日期列,如下所示

cass_table (                                                    
    data_source_id int,                                                                                                                                                                   
    company_id text,                                                              
    create_date date)

当我试图将数据保存到c*表中时,如下所示

final IndustryCompany four = new IndustryCompany(1,1236, ProdUtils.today());
 industryCompanyRepository.save(one);

public static Date today() {
        return java.sql.Date.valueOf(new SimpleDateFormat(ProducerConstants.DATABASE_DATE_FORMAT).format(Calendar.getInstance().getTime()));
    }

获取错误:

Caused by: com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: [date <-> java.sql.Date]
    at com.datastax.driver.core.exceptions.CodecNotFoundException.copy(CodecNotFoundException.java:57) ~[cassandra-driver-core-3.7.2.jar:na]

我到底怎么了?如何解决这个问题?任何帮助请。。。

ecfsfe2w

ecfsfe2w1#

非常感谢你在下面建议我这么做
又加了一个jar

<dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-extras</artifactId>
        <version>3.7.2</version>
    </dependency>

在调用save()方法之前,我调用了

public void registerCodecs() {
    CodecRegistry registry = this.session.getCluster().getConfiguration().getCodecRegistry();
    registry.register(LocalDateCodec.instance);
}
gojuced7

gojuced72#

您需要传递变量 com.datastax.driver.core.LocalDate 改为键入。有关java类型和cql类型之间的Map,请参阅文档。你可以用 LocalDate 从jdk8,或从joda时间包,如果您将使用所谓的可选编解码器。
另一种可能是写作 date <-> java.sql.Date 并将其注册为直接Map。

相关问题