如何在java中获取cql日期?

时间:2018-01-09 07:56:50

标签: java cassandra

我在我的应用程序中使用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/

但我被困住了。请帮帮我。

1 个答案:

答案 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时间类型。