2013-07-24 48 views
0

如何获得ByteBuffer的组合列组件?如何获取组合列名组件

我问this question

,但没有得到回应。我现在试图从一个字节的缓冲区得到列名作为

 Composite start = new Composite(); 
    start.addComponent(System.currentTimeMillis(), LS); 
    List<HColumn<Composite, String>> columns = cs.setRange(start, null, true, 10).execute().get().getColumns(); 

    for (HColumn<Composite, String> column : columns) { 
     ByteBuffer bf = column.getNameBytes(); 
     Serializer<Composite> ns = column.getNameSerializer(); 
     Composite composite = ns.fromByteBuffer(bf); 
// I get an exception from above line 
     String value = column.getValue(); 
    } 

我的问题是,我有一个列族复合comparatator了两个LongType 的话,我一列片上它的一个行从列列表我想获取列名称并从中获取单个组件。请别人帮我我卡住了

回答

0
for (HColumn<Composite, String> column : columns) { 
     for(Component<?> compositeComponent: column.getName().getComponents()) { 
       Serializer<?> srz = compositeComponent.getSerializer(); 
       Object value = compositeComponent.getValue(srz); 
     } 
} 
+0

在好的一面,我感谢你的回应先生,这是很高兴知道有人实际上阅读并试图帮助我。另一方面,当column.getName()被调用时,你的解决方案并没有帮助,因为程序中断了。现在发布我找到的解决方案。自从问起8小时后,我显然无法回答自己的问题。当我运行我的项目时,我注意到了这个问题在Java EE 7中,即NetBeans 7.3.1附带的Glassfish 4.0。但是当我改回到Java EE 6时,相同的代码工作。如果是这样的话,你可以反省这个并提交一个错误报告。 – user2610742

+0

通常'column.getName()'应该返回一个AbstractComposite实例。如果它坏了,你应该放一个调试器并检查Hector内部,看看发生了什么 – doanduyhai