2013-08-28 52 views
2

試圖保存List<Status>到MongoDB中(通過嗎啡),我得到這個編譯時錯誤:節省twitter4J狀態到MongoDB中給「twitter4j.Status是一個接口,而JAXB無法處理接口」

com.sun.xml.ws.spi.db.DatabindingException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 
twitter4j.Status is an interface, and JAXB can't handle interfaces. 
    this problem is related to the following location: 
     at twitter4j.Status 
     at public java.util.List Model.TwitterJob.getStatuses() 

有什麼想法?非常感謝!

回答

3

這是一個有點複雜元帥Status,因爲類StatusJSONImpl這Twitter4j 3.0實現Status保護。 您需要重寫該類並使其對您的類可見。

請查看以下示例以瞭解詳細信息。

https://github.com/phstudy/Twitter4j_JAXB_example

+0

我終於實現了一個窮人的解決方案:將(幾乎)所有字段從狀態映射到一個新類,然後我可以保存到Mongo。你的解決方案絕對更優雅! – seinecle

0

您可以使用@XmlElement註釋指定Status接口的實現類。

@XmlElement(type=SomeStatusImpl.class) 
public List<Status> getStatuses() { 
    return statuses; 
} 

更多信息

+0

會很有用。我找不到任何實現它的類! (http://twitter4j.org/javadoc/twitter4j/Status.html)。這是要麼我誤解了Javadoc,要麼就是它設計的奇怪方式。有什麼想法嗎? – seinecle

+0

@seinecle - 當你有一個填充模型時,什麼是「狀態」的impl類? –

+0

錯......我不確定(不是專業人士,對不起!)。該文檔僅顯示正在使用的接口,如下所示:'Twitter Twitter = TwitterFactory.getSingleton(); Status status = twitter.updateStatus(latestStatus); 「成功將狀態更新爲[」+ status.getText()+「]。」);' – seinecle

相關問題