【发布时间】:2013-10-02 05:07:15
【问题描述】:
我正在使用 Astyanax 1.56.26 版和 Cassandra 1.2.2 版
好的,一些情况概述:
-
我使用 cqlsh 创建了一个非常简单的列族,如下所示:
CREATE TABLE users ( name text PRIMARY KEY, age int, weight int ); 我填充了列族(没有空列)
通过 cqlsh 查询
users产生预期结果现在我想以编程方式查询
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)
提前感谢您提供的任何帮助!
【问题讨论】:
标签: java nosql cassandra cql astyanax