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

时间:2018-12-05 09:19:25

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

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

0 个答案:

没有答案