java - 使用 Morphia 映射 MongoDB 中的层次结构对象

标签 java mongodb morphia odm

假设我在 MongoDB 中有一个实体,用于存储员工列表。

@Entitiy
public class EmployeeList{
    @Embedded
    List<Employee> employeeList;
}

Employee是一个具有一些属性的抽象类。

public abstract class Employee{
    String name;
    String emailId;
}

有不同类型的员工 - 开发人员、设计师、人力资源

class Developer extends Employee{
    String githubProfile;
}


class Designer extends Employee{
   String portfolio;
}


class HumanResource extends Employee{
   String department; 
}

如果 mongo 包含开发人员、设计师和人力资源人员的列表,Morphia 可以将它们映射到相应的类吗? 例如,如果数据库有以下数据 -

[{'name':'p1', 'emailId':'p1@x1", 'portfolio':'http://abc.co'},
{'name':'p2', 'emailId':'p2@x1", 'department':'finance'},
{'name':'p3', 'emailId':'p3@x1", 'githubProfile':'http://github.com/p3'}]

当 Morphia 将这个集合映射到 EmployeeList 实体时,我如何确保它们映射到相应的类?

最佳答案

当您将员工添加到列表中时,您可能会执行如下操作。

employeeList.add(new Developer(...))
employeeList.add(new Designer(...))
employeeList.add(new HumanResource(...))

然后将实体保存在吗啡中,它应该可以工作。

PS:我没有尝试过。

关于java - 使用 Morphia 映射 MongoDB 中的层次结构对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22959854/

相关文章:

java - 如何从 prototxt 文件编译protocol buffer java类

java - Hibernate:在 Servlet 中运行时找不到合适的驱动程序

java, Morphia 如何在使用 Morphia 查找方法时比较字符串

java - 在不向域对象添加不必要的注释的情况下使用 Morphia 来持久化域对象的策略?

java - Play 2 Java - 在更新场景中使用 fill 和 bindFromRequest 验证表单

java - 无需访问数组的迭代后序遍历

mongodb - 下面的多对多关系应该如何在 MongoDB 中建模?

node.js - 如何同步向mongo插入数据(Nodejs、Express)

mongodb - 如何为 MongoDB 中的嵌入式文档创建唯一 ID?

java - MongoDB Morphia 表示已弃用