我有超过2个类,它们有大约7个相同的字段,它们将类似于java部分中的以下内容:
public abstract class IBase {
private String commonField1;
private String commonField2;
private String commonField3;
private EMyType type; // type of the object: MY_TYPE_1 or MY_TYPE_2
// ...
// + constructor and getters/setters
}
public class BaseImpl1 extends IBase {
private int base1specific1;
private int base1specific2;
// ...
// + constructor and getters/setters
}
public class BaseImpl2 extends IBase {
private int base2specific;
private String base2specific2;
// ...
// + constructor and getters/setters
}
我有两个问题:
答案 0 :(得分:1)
使用Morphia,您可以使用@Entity(someCollectionName)标记您的界面。然后,当您查询这些类型时,您可以使用datastore.createQuery(BaseImpl1.class).filter(“classname =”,BaseImpl1.class.getName())来检索该特定子类。
答案 1 :(得分:0)
我将解决问题3.其他问题非常普遍。
在mongo中,您可以将东西(文档)存储在集合中。没有架构或表格。您可以将两个子类型存储在同一个集合中,并查询它们的公共属性或子类型属性。从数据库中反序列化它们时,您可以根据它们具有的属性集来确定如何反序列化它们。