2017-12-21 35 views
1
를 사용하여 여러 부모를위한 @MapsId를 사용하여 일대일 개체를 공유 할 수

나는 @MapsId내가 JPA

Like this

를 사용하여 @OneToOne 관계를 매핑하는 방법에 대한 몇 가지 모범 사례를 읽었습니다 그리고 궁금하네요 엔티티가 "공유"되면 작동할까요? 예를 들어

...

Employee has Address OneToOne... 
Department has Address OneToOne... 

우리가 여기 같은 방법을 사용할 수 있습니까? 또는 EMPLOYEES 및 DEPARTMENTS 테이블에 fk_address_id가 있어야합니까?

인터페이스 HasAddress을 통해이 문제를 해결해야합니까?

답변

1

부모님도 아니지만 부모님과 어린이간에 공유가 가능합니다. 따라서 EmployeeAddress 행을 사용하고 Department은 다른 행을 사용합니다.

그러나 공유하고 싶다면 @OneToOne 관계가 아닙니다. Address이 Parent 일 수 있고 EmployeeDepartment이 하위 항목이므로 @ManyToOne입니다. 이 경우 EmployeeDepartmentAddress PK에 FK 열을 사용합니다.

따라서 Address 행을 공유하려면 many-to-one 연관성이 있습니다. 그렇지 않으면 Address 엔터티에서 @MapsIdmappedBy, DepartmentEmployee에 대해 일대일로 사용할 수 있습니다.

+0

아마도 '공유' 'TABLE'이 여기에 적합한 용어 일 것입니다. 'Employee'와'Department'는 자신의 'Address'를 관리 할 수 ​​있기 때문에. –

+0

이 경우 필자는'Employee'와'Department' 클래스에'@OldToOne'을 사용하여'@ MapsId'를'Address' 타입의 필드 위에 두어야합니까? –

+0

Nope. Address 행을 공유하려면 다 대일 연관입니다. 그렇지 않은 경우 Address 엔티티의지도와 Department 및 Employee의 mappedBy를 사용하여 일대일 방식을 사용할 수 있습니다. –