我在我的应用程序中使用java8和cassandra。 cassandra表中current_date的数据类型为' date'。我在java中使用实体映射到表值。并且相同字段的实体中的数据类型是java.sql.Date。
当我尝试检索记录时,从表格中选择*,其中current_date =' 2017-06-06';'我收到以下错误'
`Caused by: com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for requested operation: ['org.apache.cassandra.db.marshal.SimpleDateType' <-> java.sql.Date]
我尝试过各种数据类型,例如:
com.datastax.driver.core.LocalDate,java.util.Date ,com.google.common.reflect.TypeToken
所有人都返回相同的错误。
我已提到http://docs.datastax.com/en/developer/java-driver/3.1/manual/custom_codecs/extras/。
但我被困住了。请帮帮我。
答案 0 :(得分:1)
默认情况下,Java驱动程序会将date
类型映射到com.datastax.driver.core.LocalDate
Java类型。
如果您需要将date
转换为java.time.LocalDate
,那么您需要为项目添加额外内容,并按照文档中的说明全局注册编解码器:
cluster.getConfiguration().getCodecRegistry()
.register(LocalDateCodec.instance);
或者您只能为给定列指定编解码器:
@Column(codec = LocalDateCodec.class)
java.time.LocalDate date;
同样,转换可以转换为Joda时间类型。