Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用thrift将LongType插入Cassandra失败_Java_Nosql_Cassandra_Thrift - Fatal编程技术网

Java 使用thrift将LongType插入Cassandra失败

Java 使用thrift将LongType插入Cassandra失败,java,nosql,cassandra,thrift,Java,Nosql,Cassandra,Thrift,我试图在cassandra中插入一个长型列: Column docid = new Column(); docid.setName("docid".getBytes()); ByteBuffer val = ByteBuffer.allocate(8); val.putLong(123111111111111111L); docid.setValue(val); docid.setTimestamp(Syst

我试图在cassandra中插入一个长型列:

     Column docid = new Column();        
     docid.setName("docid".getBytes());      
     ByteBuffer val = ByteBuffer.allocate(8);
     val.putLong(123111111111111111L);
     docid.setValue(val);
     docid.setTimestamp(System.currentTimeMillis());
     client.insert(term, parent, docid, ConsistencyLevel.ONE);
它运行正常,但当我试图通过CLI获取值时,它返回

[default@Test] get Term[utf8('hello')]['docid'] as long;
=> (column=docid, value=, timestamp=1362891987234)
似乎没有正确插入值。为什么?

我尝试了插入ascii类型,它可以工作。

更改:

docid.setValue(val);
致:


也许您已经找到了解决方案,或者您切换到了CQL,但这会有所帮助:

将长值放入ByteBuffer后,您忘记了翻转()。 正如javadoc中所解释的,翻转缓冲区意味着将限制设置为当前位置,然后将当前位置设置为零

如果不翻转它,所包含的值将从当前位置(即插入的字节之后)开始读取,这就是查询时“值”为空的原因

以下是固定代码:

val.putLong(123111111111111111L);
val.flip(); // Flip the buffer
docid.setValue(val);
编辑:

val.array()

val.putLong(123111111111111111L);
val.flip(); // Flip the buffer
docid.setValue(val);