我使用的是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]
我到底怎么了?如何解决这个问题?任何帮助请。。。
2条答案
按热度按时间ecfsfe2w1#
非常感谢你在下面建议我这么做
又加了一个jar
在调用save()方法之前,我调用了
gojuced72#
您需要传递变量
com.datastax.driver.core.LocalDate
改为键入。有关java类型和cql类型之间的Map,请参阅文档。你可以用LocalDate
从jdk8,或从joda时间包,如果您将使用所谓的可选编解码器。另一种可能是写作
date
<->java.sql.Date
并将其注册为直接Map。