JPA предложение дизайна объекта - PullRequest
0 голосов
/ 04 марта 2012

У меня есть некоторые сомнения в JPA.У меня есть одна таблица сотрудников и таблица проектов.Когда значения сохраняются в таблицах Employee и Project, отношения не имеют.Сценарий первый, администратор должен иметь возможность создать Сотрудника и Проект.Позже руководитель проекта назначает каждого сотрудника в другой проект.Вот как мне записать значения в таблицу employee_project_assignment?

employee_id project_id
----------- ----------
100     ABC987
100     DEF876
101     ABC987
102     DEF876

Пользовательский интерфейс будет выглядеть следующим образом.

Когда появляется форма EmployeeProjectAssignment, Менеджер проектов выбирает один проект из другогопроекты из выпадающего.И он выбирает несколько сотрудников, которых он хочет, чтобы этот проект.В этом случае.Итак, как мне создать сущность для этой формы EmployeeProjectAssignment?

1 Ответ

3 голосов
/ 04 марта 2012

Приведенная выше таблица является чистой таблицей соединений, используемой для материализации связи ManyToMany между Employee и Project.

Сущность Employee может иметь коллекцию Projects, и / или сущность Project может иметь коллекцию Employees (т. Е. Отношение может быть однонаправленным от Employee к Project, или однонаправленным от Project к сотруднику, или двунаправленным).

Решите, какой тип ассоциации лучше соответствует вашим потребностям (в общем, двунаправленный способ облегчает жизнь). Если двунаправленный, выберите, какая сторона является владельцем ассоциации (сторона владельца имеет аннотацию @JoinTable, а другая сторона имеет атрибут mappedBy), а затем в своем методе обработки формы заполните коллекции. Сторона-владелец - это сторона, которая должна быть заполнена JPA для сохранения ассоциации.

Предположим, что владельцем является сотрудник:

employee.getProjects().clear();
employee.getProjects().addAll(projectsSelectedByAdministrator);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...