Cassandra - InvalidQueryException:预期长度为 8 或 0 字节 (10)

问题描述

从 Cassandra 获取记录时出现以下错误

Caused by: com.datastax.oss.driver.api.core.servererrors.InvalidQueryException: Expected 8 or 0 byte long (10)
    at com.datastax.oss.driver.api.core.servererrors.InvalidQueryException.copy(InvalidQueryException.java:48)
    at com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures.getUninterruptibly(CompletableFutures.java:149)
    at com.datastax.oss.driver.internal.core.cql.CqlRequestSyncProcessor.process(CqlRequestSyncProcessor.java:53)
    at com.datastax.oss.driver.internal.core.cql.CqlRequestSyncProcessor.process(CqlRequestSyncProcessor.java:30)
    at com.datastax.oss.driver.internal.core.session.DefaultSession.execute(DefaultSession.java:230)
    at com.datastax.oss.driver.api.core.cql.SyncCqlSession.execute(SyncCqlSession.java:54)
    at org.springframework.data.cassandra.core.cql.CqlTemplate.query(CqlTemplate.java:298)
    ... 58 common frames omitted

我有下表

CREATE TABLE if not exists dummy_table (
id bigint,payload varchar,bucket text,create_date timestamp,primary key (bucket,id))
WITH CLUSTERING ORDER BY (id ASC) 
         AND COMPACTION = {'class': 'TimeWindowCompactionStrategy','compaction_window_unit': 'DAYS','compaction_window_size': 1};

我的 Java 实体如下所示,我使用 java.sql.Timestamp 作为时间戳数据类型。

@Table("dummy_table")
public class DummyTableEntity {

    @PrimaryKeyColumn(name = "bucket",ordinal = 0,type = PrimaryKeyType.PARTITIONED)
    private String bucket;

    @PrimaryKeyColumn(name = "id",ordinal = 1,type = PrimaryKeyType.CLUSTERED,ordering = Ordering.ASCENDING)
    private Long id;

    @Column
    private String payload;
    
    @Column("create_date")
    private Timestamp createDate;

我的存储库类编码如下,方法称为 findLimitedRecords('2021-01-01',15L);

@Repository()
public interface DummyDao extends CassandraRepository<DummyTableEntity,MapId> {

    @Query("select * from dummy_table where bucket = ?0 and id <= ?0")
    public List<DummyTableEntity> findLimitedRecords(String bucket,Long id);
}

代码在 spring boot 和调用“findLimitedRecords”方法时运行。当我删除 id 时,代码运行良好。 请您指导一下。

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)