0
テーブルを作成しました。その主キーは((A1、A2)、A3、A4、A5)です。
私はcassandraTemplate.select(select、MyClass.class)を使用したいと思います。いくつかのレコードを選択します。「パーティションキーパーツ:他のパーツと同じようにXXXXを制限する必要があります」
select.setConsistencyLevel(com.datastax.driver.core.ConsistencyLevel.ONE);
select.where(QueryBuilder.eq("A1", A1))
.and(QueryBuilder.eq("A2", A2))
.and(QueryBuilder.eq("A3", A3)).limit(100).allowFiltering()
.setReadTimeoutMillis(100 * 1000);
私は、次のエラーを得た: HTTP status 500 - Request processing failed; nested exception is org.springframework.cassandra.support.exception.CassandraInvalidQueryException: Partition key parts: A4 must be restricted as other parts are;
作成スクリプト:
Create Table TestTable (
A1 ascii,
A2 int,
A3 int,
A4 ascii,
A5 int,
A6 bigint,
A7 bigint,
A8 ascii,
PRIMARY KEY ((A1, A2),A3, A4,A5)
) WITH compression = { 'sstable_compression' : 'DeflateCompressor', 'chunk_length_kb' : 64 }
AND compaction = { 'class' : 'LeveledCompactionStrategy' };
テーブル作成スクリプトは、http://stackoverflow.com/questions/24949676/difference-between-partition-key-composite-key-and-clustering-key-in-cassandraに記載されているので、表示することはできますか? A3、A4、A5はパーティションキーの一部ではないことも記述しています –
さらに、 'allowFiltering()'を削除してください。あなたのクエリ*が機能するために* ALLOW FILTERINGを必要とするならば、あなたはあなたのモデルを間違って作りました。また、読み取りタイムアウトを100秒に設定すると、ノードをヒントするのに適しています。 – Aaron
@Aaron allowFiltering()を取り除いた後、同じエラーが発生しました。コマンドラインでは、cql文を直接実行しましたが、同じエラーが発生しました。 – niaomingjian