spring data mongodb MappingException twitter4j.MediaEntityJSONImpl $ Size

时间:2014-12-04 12:11:03

标签: spring-data spring-boot twitter4j spring-data-mongodb

目前我们正在使用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 {
        ...
        ...
        }
}

所以:

  1. 如何解决此问题?由于Twitter4J课程不受我们的控制,我无法使用@PersistenceConstructor。我是对的吗?

  2. 我是否需要编写自定义MappingMongoConverter?是的,我已阅读参考文档,但我无法想象如何为这个Twitter4J对象编写一个?我需要写一个读者和一个作家吗?

  3. 我们采取了错误的做法吗?也就是说,当推文出现时,我们应该将Twitter4J Status对象映射/转换为我们域中的类似Status对象吗?因为我们可以更好地控制我们的域类,所以我们可以提供默认构造函数或@PersistenceConstructor

  4. 任何帮助和代码示例都将不胜感激。

    提前致谢。 GM

0 个答案:

没有答案