1

我正在使用我非常喜欢的模板,但没有看到从结果中获取列表的直接方法,所以写了这样的东西。它有效,但可能效率不高。使用我发现的方法,我必须获取列名,然后使用它来提取值。

有没有更好的办法?谢谢

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;
4

1 回答 1

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;
于 2012-08-23T06:07:37.690 回答