Morphia中的查询基类不起作用

时间:2015-03-05 17:58:20

标签: java mongodb inheritance morphia

我正在使用Mongo java驱动程序3.0.0-beta2和morphia 0.110。 我有以下课程:

@Entity
public abstract class Animal {
    protected ObjectID id;
}
@Entity
public class Cat extends Animal {
    public String name;
}

两者都在初始化时注册了morphia。

我有一个存储为Cat对象的动物的id。 此查询返回null:

datastore.get(Animal.class, id);

虽然这个查询给了我正确的对象:

datastore.get(Cat.class, id);

我做错了还是错误?我正在努力做甚么可能吗?

1 个答案:

答案 0 :(得分:1)

我认为您需要为这些类型的查询定义集合(这来自官方文档):

@Entity("animals") abstract class Animal { String name; }
@Entity("animals") Cat extends Animal { ... }
@Entity("animals") Dog extends Animal { ... }

List<Animal> animals = ds.createQuery(Animal.class).asList();

但我不确定你在这里想要达到的目的。也许泛型会是一个更好的解决方案(提供通用&#34; get by id&#34;)?