2012-08-23 51 views
1

我使用的模板,我非常喜歡,但沒有看到一個簡單的方法,從結果中得到一個列表,所以寫這樣的東西。它的工作原理可能不是很有效。與我發現的方法,我必須得到列名稱,然後使用它來提取值。Hector-getting列與ColumnFamilyResult列表

有沒有更好的方法? 謝謝

HSlicePredicate<String> slice=new HSlicePredicate<String>(StringSerializer.get()); 
      slice.setCount(pagesize+1); 
      slice.setStartOn(startUserKey); 
      ColumnFamilyResult<UUID, String> res = blogFollowingUsersTemplate.queryColumns(blogId,slice); 

      BlogFollowingUsers users=new BlogFollowingUsers(); 
      users.setBlogId(blogId); 
      List<UserCompact> list=new ArrayList<UserCompact>(); 
      for (Iterator iterator = res.getColumnNames().iterator(); iterator.hasNext();) { 
       list.add((UserCompact) Json.fromJson(res.getString(iterator.next().toString()),UserCompact.class)); 
      } 
      users.setUsers(list); 

      return users; 

回答

0

也許這樣比較好。找到它的例子之一..

SliceQuery<UUID, String, String> query = HFactory.createSliceQuery(daoUtil.getKeyspace(), UUIDSerializer.get(), 
       StringSerializer.get(), StringSerializer.get()). 
       setKey(blogId).setColumnFamily("BlogFollowingUsers"); 

     ColumnSliceIterator<UUID, String, String> iterator = 
       new ColumnSliceIterator<UUID, String, String>(query, startUserKey, "", false, pagesize+1); 

     BlogFollowingUsers users=new BlogFollowingUsers(); 
     users.setBlogId(blogId); 
     List<UserCompact> list=new ArrayList<UserCompact>(); 
     while (iterator.hasNext()) { 
      list.add((UserCompact) Json.fromJson(iterator.next().getValue(), UserCompact.class)); 
     } 
     users.setUsers(list); 
     return users;