2012-03-04 2 views
0

JPA에 의문의 여지가 있습니다. 하나의 직원 테이블과 프로젝트 테이블이 있습니다. 값이 Employee 및 Project 테이블에 저장되면 관계가 없습니다. 시나리오는 먼저 관리자가 직원 및 프로젝트를 생성 할 수 있어야합니다. 나중에 프로젝트 관리자는 각 직원을 다른 프로젝트에 할당합니다. 여기에 employee_project_assignment라는 테이블에 값을 쓰는 방법은 무엇입니까?JPA 엔티티 설계 제안

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

UI는 다음과 같이됩니다.

EmployeeProjectAssignment 양식이 오면 프로젝트 관리자는 드롭 다운의 다른 프로젝트에서 하나의 프로젝트를 선택합니다. 그리고 그는 그 프로젝트에 원하는 여러 직원을 선택합니다. 이 안에서 길. 그렇다면이 EmployeeProjectAssignment 폼에 대한 엔티티를 어떻게 만듭니 까?

답변

3

위의 표는 Employee와 Project 간의 ManyToMany 연결을 구체화하는 데 사용되는 순수한 조인 테이블입니다.

Employee 엔티티는 Project 컬렉션을 가질 수 있으며 Project 엔티티는 Employee 컬렉션을 가질 수 있습니다. 즉, Employee에서 Project로 단방향이거나 프로젝트에서 직원으로 단방향이거나 양방향 일 수 있습니다.

어떤 종류의 연관성이 사용자의 필요에 더 잘 맞는지 결정하십시오 (일반적으로 양방향성은 삶을 편하게 만듭니다). 양방향 인 경우 연결의 소유자를 지정합니다 (소유자쪽에 @JoinTable 주석이 있고 다른쪽에 mappedBy 특성이 있음). 양식 처리 메서드에서 컬렉션을 채 웁니다. 소유 측면은 JPA가 연결을 유지하기 위해 채워야하는 측면입니다.

employee.getProjects().clear(); 
employee.getProjects().addAll(projectsSelectedByAdministrator); 
+0

하지만, 여기에 직원 엔티티 프로젝트에 대한 참조를 포함하지 않습니다

는 소유 측이 직원 가정하자. 직원 엔티티가 독립적 인 것으로 저장됩니다. 나중에 우리는 직원을 임무 할당을 통해 계획 할 것입니다. – user414967

+0

이는 단지 직원의 프로젝트 모음이 처음에는 비어 있다는 것을 의미합니다. 직원을 프로젝트에 지정하지 않고 직원을 만들면됩니다. –

+0

확인. 나는 거의 아이디어를 얻었습니다. 감사. 그러나 하나 더 질문. 나중에 프로젝트/프로젝트를 직원에게 할당하면 직원 엔티티 자체가 데이터베이스에 다시 저장됩니다. 샘플 코드를 제공하도록 요청하십시오 .. – user414967