2012-02-22 57 views
1

我無法訪問某些數據。我正在使用YCSB與許多不同的數據庫進行通信,如Cassandra和MongoDB。從抽象類檢索數據

我真的可以修改的唯一類是我的「工作量」類,它正在做一些插入和讀取操作。我使用從數據庫中讀取的方法是在類:

public void doRead(DB db) 
{ 
    String keyname = buildKeyName(keynum); 
    System.out.println(keyname); 
    HashSet<String> fields = null; 

    if (!readallfields) 
    { 
     // read a random field 
     String fieldname = "field" + fieldchooser.nextString(); 
     fields = new HashSet<String>(); 
     fields.add(fieldname); 
    } 

db.read(table,keyname,fields,new HashMap<String,ByteIterator>()); 
} 

我試圖修改代碼,以便我能讀HashMap中的內容。我刪除了db.read線,並與

HashMap<String, ByteIterator> kv_hashmap = new HashMap<String, ByteIterator>(); 
db.read(table, keyname, fields, kv_hashmap); 

取代它,然後試圖從kv_hashmap閱讀:

System.out.println(kv_hashmap.get(fields)); 

db.read只返回一個int。 DB是一個公共抽象類,我寧願不修改,其目的是爲了跟多種數據庫:

這是db.read電話:

public abstract int read(String table, String key, Set<String> fields, HashMap<String,ByteIterator> result); 

它返回,從引用javadoc:

零成功,錯誤或「未找到」時爲非零錯誤代碼。

我需要從kv_hashmap讀取值。我不明白爲什麼我不能訪問它的價值。

+1

你的問題還不清楚。請在代碼中顯示你正在努力完成的任務以及爲什麼它不工作。 – 2012-02-22 06:28:54

+0

謝謝,我解決了這個問題。 :) – eggonlegs 2012-02-22 06:57:22

+1

read-Method應該執行什麼操作?它是否把所有的鍵字都放在給定的hashMap中?在閱讀之後,你想通過hashmap訪問信息,這是你的目的嗎? – 2012-02-22 07:22:14

回答

0

我接過一看DB類的實現和javadoc中還稱:

@param result A HashMap of field/value pairs for the result 

但是,我隨後也看着BasicDB延伸DB - 和它的身體只是打印出傳入的領域。

我建議你做的是打印實際的具體類的DB被傳遞給你的方法,看看那類實際上做read方法中,是這樣的:

System.out.println(Test.class.getName()); 

然後看看的read方法的任何類顯示 - 如果它不填充result的HashMap(與BasicDB實現),那麼不會有什麼東西可以閱讀