Сопоставление иерархических объектов в MongoDB с использованием Morphia

Допустим, у меня есть объект в MongoDB, в котором хранится список сотрудников.

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

Сотрудник — это абстрактный класс с некоторыми свойствами.

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

Есть разные типы сотрудников - Разработчик, Дизайнер, HumanResource

class Developer extends Employee{
    String githubProfile;
}


class Designer extends Employee{
   String portfolio;
}


class HumanResource extends Employee{
   String department; 
}

Если mongo содержит список разработчиков, дизайнеров и сотрудников HumanResource, может ли 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, как мне убедиться, что они сопоставлены с соответствующими классами?


person shiladitya    schedule 09.04.2014    source источник


Ответы (1)


Когда вы добавляете сотрудников в список, вероятно, вы будете делать что-то вроде ниже.

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

Затем сохраните сущность в morphia, и она должна работать.

PS: я не пробовал это.

person Lalit Agarwal    schedule 09.04.2014