java - 使用 Java 将 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(前一种方式比后者好得多)。

https://stackoverflow.com/questions/10170506/

相关文章:

macos - 使用 OS X 10.10 Yosemite Beta 使用 Homebrew 重新

node.js - Mongoose:ObjectId 比较失败不一致

java - 为 MongoDB Java 驱动程序配置日志记录

javascript - Meteor.js 部署到 "example.com"还是 "www.ex

c# - 如何将 BsonDocument 对象反序列化回类

mongodb - 如何在 Mongoose Schema 中表示 MongoDB GeoJSON

python - 使用 PyMongo 将 Pandas 数据框插入 mongodb

node.js - 按日期时间字段获取最新的 MongoDB 记录

mongodb - 使用 pyMongo 创建 ISODate

mongodb - 在 mongodb 和 pymongo 中测试空字符串