【发布时间】: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());
【问题讨论】:
-
Alex/Ankur:在选择查询期间出现此问题,但插入操作引发了旧问题。
-
在更改日期格式(从字符串到日期格式)并更新代码中所做的更改后,问题已解决。这样任何人都有同样的问题可能会有所帮助
标签: java cassandra cassandra-3.0 spring-data-cassandra