1
我在RIAK上存儲Person POJO(4個字符串字段 - id,name,lastUpdate,Data),然後嘗試使用MapReduce獲取這些對象。在RIAK上獲取MapReduce結果(使用Java客戶端)
我這樣做非常相似,芭蕉文檔:
BucketMapReduce m = riakClient.mapReduce("person");
m.addMapPhase(new NamedJSFunction("Riak.mapByFields"), true);
MapReduceResult result = m.execute();
Collection<Person> tmp = result.getResult(Person.class);
人的字符串構造函數被調用:
public Person(String str){}
(我必須有這樣的構造,否則我得到一個異常,因爲這是缺少) 在那裏,我得到的對象作爲一個字符串 - 對象的字段在一個字符串與奇怪的分隔符。
爲什麼我沒有將對象自動轉換爲我的POJO?我真的需要檢查字符串並反序列化它嗎?我做錯了什麼?s
喜布賴恩,感謝您的答覆。其實我已經嘗試了你提到的JS函數,但是我甚至沒有通過執行階段。我得到一個IOException:{「phase」:0,「error」:「[{>,477},{<<\"message\">>,<< \」JSON.parse \「>>},{<<\"source\">>,<<\"unknown\">> }]「,」input「:」{ok,{r_object,<<\"new\">>,<<\"2\">>,[{r_content,{dict,7 ....或許你提到的註釋是我缺少的東西? – 2012-07-29 15:28:25
聽起來像你存儲在riak中是無效的JSON;例如'JSON.parse'錯誤(或者至少至少有一個你存儲的項目是無效的)上面的代碼是一個完全有效的例子 - 註釋不是如果你想在讀寫對象時指定索引,鏈接等,可以使用它們 – 2012-07-29 17:52:36
嘿,Brian,非常感謝!我正在運行你的例子,並得到了我的原始異常:org.codehaus.jackson.map。 JsonMappingException:找不到適合類型的構造函數[simple type,com.att.cso.omss.data.riak.contr ollers.RiakBaseController $ Personx]:無法從JSON對象實例化(需要添加/啓用類型信息?) 然後我用你的代碼創建了一個新的乾淨的項目 - 它的工作!顯然,我的POM中的一些較舊的依賴關係指向了其他的JSON版本,它正在壓倒RIAK的一個需求。謝謝! – 2012-07-30 08:03:29