原因:com.datastax.driver.core.exceptions.invalidqueryexception:日期应为8或0字节长(25)

qij5mzcb  于 2021-06-14  发布在  Cassandra
关注(0)|答案(0)|浏览(190)

我使用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());

最后一个更新日期是cassandra中的timestamp数据类型列。username和last_updateDate列是数据库中的复合键,使用最新版本的cassandra。
执行时出现以下错误。
原因:com.datastax.driver.core.exceptions.invalidqueryexception:日期应为8或0字节长(25)
但是
以下更改后问题得到解决。

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());

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题