首页 > 解决方案 > BSON 字段名称无效:尝试在 MongoDB 中插入 HashMap 时

问题描述

这一行:

instance.getRubricDocumentMap().put(new Rubric(), new ArrayList<NewsletterDocument>());

导致此错误:

com.oxway.store.api.exceptions.StoreException: java.lang.IllegalArgumentException: Invalid BSON field name com.oxway.report.models.Rubric@188993df
    at com.oxway.store.mongodb.MongoDBStoreDao.create(MongoDBStoreDao.java:122)

当我试图instance在 MongoDB 中插入对象时。

这是实例类:

@Identity(name = "identity", type = String.class)
public class NewsletterInstance extends Definition {
    protected NewsletterStatus status;
    protected String newsletterDefinitionId;
    protected String subtitle;

    protected Map<Rubric, List<NewsletterDocument>> rubricDocumentMap;

    public Map<Rubric, List<NewsletterDocument>> getRubricDocumentMap() {
        return rubricDocumentMap;
    }

    public String getSubtitle() {
        return subtitle;
    }

    public void setSubtitle(String subtitle) {
        this.subtitle = subtitle;
    }

    public void setRubricDocumentMap(Map<Rubric, List<NewsletterDocument>> rubricDocumentMap) {
        this.rubricDocumentMap = rubricDocumentMap;
    }

    public String getNewsletterDefinitionId() {
        return newsletterDefinitionId;
    }

    public void setNewsletterDefinitionId(String newsletterDefinitionId) {
        this.newsletterDefinitionId = newsletterDefinitionId;
    }

    public NewsletterStatus getStatus() {
        return status;
    }

    public void setStatus(NewsletterStatus status) {
        this.status = status;
    }

    public NewsletterInstance() {

    }
}

这里是量规类:

public class Rubric {
    protected String id;

    protected String title;
    protected String description;

    public Rubric() {
        id = UUID.randomUUID().toString();
    };

    public Rubric(String title, List<NewsletterDocument> documents) {
        super();
        this.title = title;
        id = UUID.randomUUID().toString();
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

知道这里有什么问题以及为什么我不能在 MongoDB 中插入这个对象吗?这是我第一次使用 HashMap,所以也许有一些我不知道的东西。

谢谢

标签: javamongodbbson

解决方案


推荐阅读