java.lang.ClassCastException : org. bson.types.ObjectId 无法转换为 com.mongodb.DBObject

标签 java classcastexception morphia

我正在尝试将 Morphia 用于一个项目,但我在保存实体时遇到了一些问题。我认为我的实体定义有问题,所以我尝试了他们网站上提供的那个,但它抛出了这个异常。我检查了 mongo,一切似乎都很好;正在创建集合并且似乎有记录。

我开始整理一个简单的 JUnit 测试,但它不会超出 datastore.save(e):

package com.wtf.data;

import com.google.code.morphia.Datastore;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Id;
import com.google.code.morphia.emul.org.bson.types.ObjectId;
import com.mongodb.Mongo;
import org.junit.Test;

import java.net.UnknownHostException;

public class MorphiaTest {
    @Entity
    class MyEntity {
        @Id
        ObjectId id;
        String name;
    }

    @Test
    public void save() {
        Mongo mongo = null;
        try {
            mongo = new Mongo("127.0.0.1", 27017);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        Morphia morphia = new Morphia();
        morphia.map(MyEntity.class);
        Datastore datastore = morphia.createDatastore(mongo, "MorphiaTest");
        datastore.ensureIndexes();

        MyEntity e = new MyEntity();
        datastore.save(e);
    }
}

java.lang.RuntimeException: java.lang.ClassCastException: org.bson.types.ObjectId 无法转换为 com.mongodb.DBObject 在 com.google.code.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:149) 在 com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:433) 在 com.google.code.morphia.mapping.Mapper.updateKeyInfo(Mapper.java:228) 在 com.google.code.morphia.DatastoreImpl.postSaveOperations(DatastoreImpl.java:886) 在 com.google.code.morphia.DatastoreImpl.postSaveGetKey(DatastoreImpl.java:683) 在 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:734) 在 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:802) 在 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:796) 在 com.wtf.data.MorphiaTest.save(MorphiaTest.java:41)

我做错了什么?

最佳答案

尝试替换

import com.google.code.morphia.emul.org.bson.types.ObjectId;

import org.bson.types.ObjectId;

关于java.lang.ClassCastException : org. bson.types.ObjectId 无法转换为 com.mongodb.DBObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769125/

相关文章:

java - 无法将 Double 数字放入 BigDecimal 变量中

java - Treeset.add() 时出现 ClassCastException,尽管实现了与compareTo 方法的比较

java - Morphia-CodecConfigurationException : Can't find a codec for class - But class is registered

jakarta-ee - 如何在 Netbeans (7.0.1) 中将现有项目从 Java EE5 降级到 J2EE 1.4

java - 使用apache-httpClient,getResponseBodyAsStream结果不一样

java - 打开 Excel 文件时出现 ClassCastException

java - 将 Morphia 与 Java EE 结合使用

java - 如何识别并构建 2007 年以来的 JBoss java 应用程序?

java - 使用 Java 发送斜杠和反斜杠

java - 监听某些变化并将其更新到数据库