Astyanaxバージョン1.56.26とCassandraバージョン1.2.2を使用しています
わかりました、少し状況の概要:
私は次のようにcqlshを使用して非常に単純な列ファミリーを作成しました。
CREATE TABLE users ( name text PRIMARY KEY, age int, weight int );
列ファミリーにデータを入力しました(空の列はありません)
users
cqlshを介してクエリを実行すると、期待される結果が得られますプログラムでクエリを実行したい
users
ので、次のようにします。
ColumnFamily<String, String> users =
new ColumnFamily<String, String>("users", StringSerializer.get(), StringSerializer.get());
OperationResult<ColumnList<String>> result = ks.prepareQuery(users)
.getRow("bobbydigital") // valid rowkey
.execute();
ColumnList<String> columns = result.getResult();
int weight = columns.getColumnByName("weight").getIntegerValue();
weight
NPEの割り当て中にスローされます!:(
私の理解では、行キーとしてresult
含まれている行に関連付けられているすべての列が含まれている必要があり"bobbydigital"
ます。"weight"
次に、名前の付いた列の値を整数変数に割り当てようとしましたweight
。columns
割り当ての直後にデバッグコードを追加すると、次のよう に変数が割り当てられることがわかります。
System.out.println("Column names = " + columns.getColumnNames());
次の出力が得られます。
Column names = [, age, weight]
では、なぜnullポインターなのですか?誰かが私がどこで間違ったのか教えてもらえますか?また、なぜ空白の列名があるのですか?
更新:
また、次のように別の方法でクエリを実行しようとすると、次のようになります。
Column<String> result = ks.prepareQuery(users)
.getKey("bobbydigital")
.getColumn("weight")
.execute().getResult();
int x = result.getIntegerValue();
次の例外が発生します。
InvalidRequestException(why:Not enough bytes to read value of component 0)
あなたが提供できるどんな助けにも前もって感謝します!