2017-07-31 141 views
0

我在我的应用程序中使用java8和cassandra。 cassandra表中current_date的数据类型是'date'。 我正在使用实体映射到表值。并且实体中相同字段的数据类型为com.datastax.driver.core.LocalDate。编解码器找不到请求的操作:['org.apache.cassandra.db.marshal.SimpleDateType'<-> com.datastax.driver.core.LocalDate]

当我尝试检索记录 'Select * from table where current_date='2017-06-06';' 我收到以下错误”

产生的原因:com.datastax.driver.core.exceptions.CodecNotFoundException:编解码器 找不到请求的操作: [ 'org.apache.cassandra.db.marshal.SimpleDateType' < - > com.datastax.driver.core.LocalDate]

+1

这个? http://docs.datastax.com/en/developer/java-driver/3.1/manual/custom_codecs/extras/ – Eugene

回答

0

默认情况下,Java驱动程序将映射日期类型成com.datastax.driver.core.LocalDate Java type.

如果需要转换日期java.time.LocalDate,那么你需要额外添加到项目中: 您可以只给列指定的编解码器:

@Column(codec = LocalDateCodec.class) java.time.LocalDate current_date ; 

如果这两个工作因此未请有查看代码如何创建会话,集群等连接到数据库。由于日期是对cassandra数据类型的新增加,因此协议版本也会产生影响。 相应更新版本

+0

我遇到过类似的问题。我通过将版本从3更新为4来修复它 –

相关问题