问题描述
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 (将#修改为@)