使用Morphia和MongoDb的每个类配置表不起作用

时间:2018-01-17 13:06:42

标签: mongodb inheritance morphia odm

我正在尝试使用Morphia + MongoDb每个类配置表

@Entity("user")
public class User{
     @Id
     private ObjectId id;
     private String username;

     public void setId(ObjectId id){
           this.id = id;
     }
     public ObjectId getId(){
           return this.id;
     }
     public void setUsername(String username){
           this.username = username;
     }
     public String getUsername(){
          return this.username;
      }
}

和助理

@Entity("assistant")
public class Assistant extends User{
       private String fullname;
       public String getFullname(){
              return this.fullname;
       }
       public void setFullname(String fullname){
              this.fullname = fullname;
       }
}

我希望拥有一个具有相同ObjectId的用户文档和助理文档。怎么做?

1 个答案:

答案 0 :(得分:1)

MongoDB不是关系数据库,你需要改变你的心理和心理。数据库模型。

如果某人是助手,则所有数据都将转到assistant集合。没有连接(聚合除外,但您不希望为简单的用户查找执行此操作),因此所有信息都应位于一个实体中。

您甚至可以将助理留在user集合中。或者用更一般的术语来说:将所有子类保留在其父类的实体中。 Morphia将自动为每个实体存储Java类,因此您可以简单地对其进行过滤。由于没有严格的模式,因此没有空值,因为JSON只存储可用的属性。