简体   繁体   English

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

[英]java.lang.ClassCastException: org.bson.types.ObjectId cannot be cast to com.mongodb.DBObject

I'm trying to use Morphia for a project but I'm having some trouble getting entities to save. 我正在尝试将Morphia用于一个项目,但是在保存实体时遇到了一些麻烦。 I figured something was wrong with my entity definition so I tried the one provided on their site and it throws this exception. 我发现实体定义有问题,因此尝试了他们网站上提供的定义,并抛出了此异常。 I checked mongo and everything seems to be fine; 我检查了mongo,一切似乎都很好。 the collections are being created and there appear to be records. 正在创建集合,并且似乎有记录。

I started to put together a simple JUnit test, but it won't get beyond datastore.save(e) : 我开始整理一个简单的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 cannot be cast to com.mongodb.DBObject at com.google.code.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:149) at com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:433) at com.google.code.morphia.mapping.Mapper.updateKeyInfo(Mapper.java:228) at com.google.code.morphia.DatastoreImpl.postSaveOperations(DatastoreImpl.java:886) at com.google.code.morphia.DatastoreImpl.postSaveGetKey(DatastoreImpl.java:683) at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:734) at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:802) at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:796) at com.wtf.data.MorphiaTest.save(MorphiaTest.java:41) java.lang.RuntimeException:java.lang.ClassCastException:org.bson.types.ObjectId无法在com.google.code.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:149)处转换为com.mongodb.DBObject com.google.code.morphia.mapping.Mapper.updateKeyInfo(Mapper.java:228)的com.google.code.morphia.mapping.Mapper.readMappedField(Mapper.java:433)。 com的com.google.code.morphia.DatastoreImpl.postSaveGetKey(DatastoreImpl.java:683)的com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:734)的DatastoreImpl.postSaveOperations(DatastoreImpl.java:886) com.wtf.data.MorphiaTest.save(MorphiaTest.java)上com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:796)上的.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:802) :41)

What am I doing wrong? 我究竟做错了什么?

Try to replace 尝试更换

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

with

import org.bson.types.ObjectId;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么会出现此异常 - java.lang.ClassCastException:java.lang.String无法强制转换为com.mongodb.DBObject - Why has this exception started occurring - java.lang.ClassCastException: java.lang.String cannot be cast to com.mongodb.DBObject java.lang.ClassCastException:com.mongodb.FindIterableImpl无法转换为org.bson.Document - java.lang.ClassCastException: com.mongodb.FindIterableImpl cannot be cast to org.bson.Document com.mongodb.DBObject / Java的BSON序列化器 - com.mongodb.DBObject / BSON serializer for java Morphia java.util.Arrays$ArrayList 在进行 Projection.projection 时无法转换为 com.mongodb.DBObject - Morphia java.util.Arrays$ArrayList cannot be cast to com.mongodb.DBObject when making a Projection.projection java.lang.ClassCastException:org.hibernate.internal.QueryImpl无法转换为com.models.User - java.lang.ClassCastException: org.hibernate.internal.QueryImpl cannot be cast to com.models.User java.lang.ClassCastException:com.mongodb.client.internal.AggregateIterableImpl 无法转换为 java.util.ArrayList - java.lang.ClassCastException: com.mongodb.client.internal.AggregateIterableImpl cannot be cast to java.util.ArrayList 是否有不需要整个 mongodb 驱动程序的 org.bson.types.ObjectId 替代方案? - Is there an alternative to org.bson.types.ObjectId that doesn't require the entire mongodb driver? 线程“主”中的异常java.lang.ClassCastException:无法将java.lang.String强制转换为com.mongodb.BasicDBObject - Exception in thread “main” java.lang.ClassCastException: java.lang.String cannot be cast to com.mongodb.BasicDBObject 有没有办法在没有org.bson.types.ObjectId的情况下使用Mongo / Morphia? - Is there a way to use Mongo/Morphia without org.bson.types.ObjectId? 找不到能将org.bson.types.ObjectId类型转换为org.bson.types.ObjectId类型的转换器 - No converter found capable of converting from type org.bson.types.ObjectId to type org.bson.types.ObjectId
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM