我正在使用 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]
那么为什么是空指针呢?有人能告诉我哪里出错了吗?另外,为什么有空白列名?
更新:
另外,如果我尝试以不同的方式查询,如下所示:
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)
提前感谢您提供的任何帮助!