将twitter4J状态保存到MongoDB会给出“twitter4j.Status是一个接口,而JAXB无法处理接口”

时间:2013-08-28 14:25:37

标签: java mongodb jaxb twitter4j morphia

尝试将List<Status>保存到MongoDB(通过Morphia),我得到了这个编译时错误:

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()

有什么想法吗?非常感谢!

2 个答案:

答案 0 :(得分:3)

编组Status有点复杂,因为在Twitter4j 3.0中实现StatusJSONImpl的类Status受到保护。 您需要覆盖该类并使其对您的类可见。

请查看以下示例以获取详细信息。

https://github.com/phstudy/Twitter4j_JAXB_example

答案 1 :(得分:0)

您可以使用@XmlElement注释指定Status接口的实现类。

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

了解更多信息