【问题标题】:Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Expected 8 or 0 byte long for date (25)引起:com.datastax.driver.core.exceptions.InvalidQueryException:日期(25)的预期长度为 8 或 0 字节
【发布时间】:2019-05-06 19:39:39
【问题描述】:

我使用 Cassandra 和 SpringBoot 开发应用程序。 我已经用 Java 编写了 Cassandra 查询;

String userName="testUser";
String lastUpdatedDate="2018-11-29 13:00:43.400";
String tenantName="demo";

Select select = QueryBuilder.select().all()
                    .from(tenantName,getGenericClass().getSimpleName())
                    .where(QueryBuilder.eq("user_Name", userName))
                    .and(QueryBuilder.gt("last_updateddate",  lastUpdatedDate))
                    .allowFiltering()
                    .limit(100);
           return (List<T>) cassandraOperations.select(select, getGenericClass());

last_updateddate 是 Cassandra 中的时间戳数据类型列。 userName 和 last_updateddate 列是数据库中的复合键,使用最新版本的 Cassandra。

执行时出现以下错误。

原因:com.datastax.driver.core.exceptions.InvalidQueryException:日期 (25) 的预期长度为 8 或 0 字节

但是

以下更改后问题得到解决。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

Date date = sdf.parse(lastUpdatedDate);
long timeInSec = date.getTime();

Timestamp ts=new Timestamp(timeInSec);  
Date date1=ts;                                                                                                         
 Select select = QueryBuilder.select().all()
                        .from(tenantName,getGenericClass().getSimpleName())
                        .where(QueryBuilder.eq("user_Name", userName))
                        .and(QueryBuilder.gt("last_updateddate",  date1))
                        .allowFiltering()
                        .limit(100);
               return (List<T>) cassandraOperations.select(select, getGenericClass());

【问题讨论】:

标签: java cassandra cassandra-3.0 spring-data-cassandra


【解决方案1】:

你必须检查 Cassandra 表的数据类型并使用对应的 java 数据类型,并在声明变量以传递列的值时在 java 代码中使用它。

示例:在 Cassandra LocalDate 中,然后在 java 中定义 cassandra.core 包的 LocalDate 而不是 util 包的 Date 或 LocalDate。

检查这个type mapping between Cassandra vs Java

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 2019-09-22
    • 2019-11-01
    • 2014-08-29
    • 2014-12-28
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多