让我们说我有两个非常基本的类,它们共享我想要存储在mongo中的大部分信息。像这样:
public class Customer{
@id
private int customerID;
private String Name;
private int social;
private long balance;
}
public class CustomerInfo{
@id
private int customerID;
private String Name;
private int social;
private long balance;
private Address address;
private PhoneNumber phoneNumber;
}
如果我不希望在应该做的时候有两个几乎相同的集合。我是否可以为CustomerInfo
创建单个集合,并且仍然使用其中包含的记录填充Customer
类,因为它们是CustomerInfo
的子集?
我知道我只能加载customerInfo
只有我关心的值,但我想要更优雅的东西,并且更好地插入我现有的格式。
答案 0 :(得分:1)
@Entity(value="customers", noClassnameStored=false)
public class Customer {
@Id
private ObjectId id;
private String Name;
private int social;
private long balance;
}
public class CustomerInfo extends Customer {
private Address address;
private PhoneNumber phoneNumber;
}
应该那样工作。由于您将类名存储在每个文档中,因此您可以轻松查询要使用的类名;即使Morphia会根据属性自行解决这个问题。
PS:除非你知道自己做了什么以及为什么这样做,否则请将你的ID保存为ObjectId。 PPS:您可能希望使用对象数据类型而不是原语,以防它们为空 - 在这种情况下,它们不会被存储并占用数据库中的空间。