Morphia - 使用ID的自定义对象时@Reference的问题

时间:2013-02-03 20:00:29

标签: java mongodb morphia

我正在尝试为实体的ID而不是通常的ObjectId使用自定义对象 - 我们的想法是拥有一个复合_id,其中包含一个“version”以及标识符。

以下是我想用于ID的内容:

public class VersionedId implements DBObject {

    ObjectId _id;
    Long _version;

    public Map toMap() {
        Map<String, Object> map = new HashMap<String, Object>(2);
        map.put("_id", _id);
        map.put("_version", _version );
        return map;
    }
}

然后实体看起来像这样 - 父引用子实体:

@Entity (value = "entities")
public class VersionedEntity {

    @Id 
    VersionedId _id;

    @Reference
    VersionedSubEntity subEntity;
}

...以及引用的子实体:

@Entity (value = "subentities")
public class VersionedSubEntity {

    @Id 
    VersionedId _id;
}

保存和加载VersionedSubEntity都可以正常工作,保存 VersionedEntity也是如此 - 使用_id_version正确创建了DBRef。但是,尝试加载 VersionedEntity会引发以下情况:

java.lang.ClassCastException: com.mongodb.BasicDBObject cannot be cast to com.mongodb.DBRef
at com.google.code.morphia.mapping.Mapper.fromDb(Mapper.java:483)
at com.google.code.morphia.mapping.Mapper.fromDBObject(Mapper.java:267)
at com.google.code.morphia.query.MorphiaIterator.processItem(MorphiaIterator.java:53)
at com.google.code.morphia.query.MorphiaIterator.next(MorphiaIterator.java:48)
at com.google.code.morphia.query.QueryImpl.get(QueryImpl.java:344)

我做错了什么提示?

0 个答案:

没有答案