目前我们正在使用Spring Boot(1.1.9.RELEASE),Spring Data,MongoDB和Twitter4J来存储推文。
当推文到达时,我们可以将这些存储到MongoDB中。都好!
然而,当我们尝试使用Spring Data从MongoDB读取推文时,我们得到了
Exception in thread "main" org.springframework.data.mapping.model.MappingException:
No property json found on entity class `twitter4j.MediaEntityJSONImpl$Size`
to bind constructor parameter to!
这是因为,我相信twitter4j.MediaEntityJSONImpl
没有默认构造函数。如下所示:
public class MediaEntityJSONImpl extends EntityIndex implements MediaEntity {
private static final long serialVersionUID = 3609683338035442290L;
private long id;
private String url;
private String mediaURL;
private String mediaURLHttps;
private String expandedURL;
private String displayURL;
private Map<Integer, MediaEntity.Size> sizes;
private String type;
MediaEntityJSONImpl(JSONObject json) throws TwitterException {
...
...
}
}
所以:
如何解决此问题?由于Twitter4J课程不受我们的控制,我无法使用@PersistenceConstructor
。我是对的吗?
我是否需要编写自定义MappingMongoConverter
?是的,我已阅读参考文档,但我无法想象如何为这个Twitter4J对象编写一个?我需要写一个读者和一个作家吗?
我们采取了错误的做法吗?也就是说,当推文出现时,我们应该将Twitter4J Status
对象映射/转换为我们域中的类似Status
对象吗?因为我们可以更好地控制我们的域类,所以我们可以提供默认构造函数或@PersistenceConstructor
。
任何帮助和代码示例都将不胜感激。
提前致谢。 GM