Astyanax地图数据访问cql3

时间:2013-04-11 22:27:44

标签: map cassandra astyanax cql3

我正在尝试使用Astyanax访问地图列类型。 从我的例子中我已经采取了以下措施。我正在循环行,并且可以从除了具有数据类型MAP的列storename之外的所有列获取数据。我假设我需要循环遍历地图的元素以将数据导入我的对象,但我无法弄清楚如何从列中获取地图数据。

我正在尝试使用column.getValue并尝试过getByteBuffer,但无法使用。我可以得到一个列对象,我看到有一个ColumnMap接口,但我无法弄清楚如何将数据放入扩展或使用它的对象。我也看到了MapSerializer接口但不确定如何实现...

        List<Store> stores = new ArrayList<Store>();

        for (Row<Integer, String> row : result.getResult().getRows()) {

            Store store = new Store();

            ColumnList<String> columns = row.getColumns();

            store.setStoreID(columns.getStringValue("store_id", null));
            store.setShopName(columns.getStringValue("shopname", null));

            // lost trying to get the columns Map data here
            // should I loop the map or pass the data straight to my store object as a map?
            // How do I access the map data in this column?
            for ( Map<String, String> map : columns.getValue("storename", imap, result).getResult() )
            {
                store.setStoreNames( "lang", "storename");
            }

            stores.add(store);
        }

我对getValue()有点困惑,因为它需要一个Serializer作为它的第二个参数,而默认值是它的第三个。如何将MapSerializer作为第二个参数传递,或者我应该使用getValue()方法?默认值是Map中的键值吗?如果我想在地图中返回所有值呢?感谢。

1 个答案:

答案 0 :(得分:0)

最后这对我有用。我能够使用为looping maps here.

提供的技术遍历地图中的条目
Map<String, String> map = columns.getValue("storename", 
                    new MapSerializer<String, String>(UTF8Type.instance, UTF8Type.instance)
                    , new HashMap<String ,String>());