java - 使用 Java 将 Java 对象插入 MongoDB 集合

标签 java mongodb

我正在尝试使用 Java 将整个 Java 对象插入到 MongoDB 集合中。我收到以下错误:

错误:

Exception in thread "main" java.lang.IllegalArgumentException: can't serialize class net.yogesh.test.Employee
    at org.bson.BSONEncoder._putObjectField(BSONEncoder.java:185)
    at org.bson.BSONEncoder.putObject(BSONEncoder.java:119)
    at org.bson.BSONEncoder.putObject(BSONEncoder.java:65)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:176)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:134)
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:129)
    at com.mongodb.DBCollection.save(DBCollection.java:418)
    at net.yogesh.test.test.main(test.java:31)

Emplyoee.java (POJO)

package net.yogesh.test;

import java.io.Serializable;

public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;
    private long no;
    private String name;

    public Employee() {
    }

    public long getNo() {
        return no;
    }

    public void setNo(long no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

主方法类 (test.java)

package net.yogesh.test;

import java.net.UnknownHostException;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class test {

    public static void main(String[] args) throws UnknownHostException,
            MongoException {

        Mongo mongo = new Mongo("localhost", 27017);
        DB db = mongo.getDB("test");

        Employee employee = new Employee();
        employee.setNo(1L);
        employee.setName("yogesh");


        BasicDBObject basicDBObject = new BasicDBObject("Name", employee);

        DBCollection dbCollection = db.getCollection("NameColl");

        dbCollection.save(basicDBObject);   

    }

}

谁能解释我为什么会收到这个错误?

最佳答案

我有点困惑,不知道为什么你会认为这首先会起作用。您需要知道的第一件事是如何将您的 POJO 映射到 MongoDB 文档。目前,您没有告诉系统(您的代码)如何执行此操作。

您可以为此使用映射库(想到 Morphia)或使用 ReflectionDBObject。任何一种解决方案都允许您将 POJO 映射到 MongoDB 文档或将 MongoDB 文档映射到 POJO(前一种方式比后者好得多)。

关于java - 使用 Java 将 Java 对象插入 MongoDB 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170506/

相关文章:

search - 何时使用Hadoop,何时使用ElasticSearch进行分组依据/方面?

mongodb - 如何在更新或聚合中生成唯一的 ObjectId?

php - 如果mongodb中不存在某个键,如何插入文档

java - 在图像中嵌入代码

java - 在 GridWorld 的 GUI 中扩展一个类而不更改使用它的其他类

node.js - nodejs mongoose 批量更新

mongodb - Mongo 2.6 的 meteor oplog

java - 添加两个多头会带来较低的结果

java 十六进制到 int 的转换 - 必须删除 0X 吗?

java - 我如何在 JMockit 中模拟具有通用对象的方法?