0

나는 두 개의 클래스 직원 및 프로젝트를 가지고, 내가 한 관계를하고있는 중이 야하고하지 않고 노력 property-ref 속성 아래를 참조하십시오 :"property-ref"속성은 최대 절전 모드의 "일대일"요소 태그에서 무엇을합니까?

<one-to-one name="project" class="com.hibernate.practice.entitytype.Project" <!--property-ref="employee"--> cascade="save-update"> </one-to-one> 

u는 내가 property-ref 속성

를 댓글을 달았 볼 수 프로젝트 (클래스) 매핑 파일의

다른 측면은 내가 정의 : 지금

<many-to-one name="employee" class="com.hibernate.practice.entitytype.Employee" column="EMP_ID" unique="true" ></many-to-one> 

는 정의의 말씀 : property-ref (옵션) : T로 연결된 연관 클래스의 프로퍼티의 이름 그의 외래 키. 지정하지 않으면 연결된 클래스의 기본 키가 입니다.

"property-ref"를 지정하지 않았지만 프로젝트 테이블의 EMP_ID 열에 정의에서와 같이 프로젝트 ID (기본 키)가 채워질 것으로 예상했던 직원 ID (기본 키)가 채워집니다. 굵게 강조 표시됨). 내가 잘못 추가했거나이 속성 -ref를 추가하지 않으면 어떤 차이가 있는지 설명해주십시오. 차이가 보이지 않습니까? 왜 최대 절전 모드입니까? 제발 대답을 기다리고 있습니다.

답변

1

여전히 프로젝트 테이블의 EMP_ID 열은 직원 ID (기본 키)로 채워집니다. 예상대로 프로젝트 ID (기본 키)가 정의 된대로 으로 채워질 것으로 예상됩니다 (굵게 강조 표시).

Project.EMP_ID는 Employee.ID로 채워 져야합니다. 그것은 외래 키가 작동하는 방식입니다.

Project.EMP_ID가 Project.ID를 가리키는 이유가 확실하지 않습니다. 당신이 방향 협회의 역 측면에 대한 property-ref를 사용할 필요가

<one-to-one name="person" class="Person"/> 

<one-to-one name="employee" class="Employee" constrained="true"/> 

:

<one-to-one name="employee" class="Employee" property-ref="person"/> 

두 번째 예에서, 당신은 단순히에만이

프로젝트 및 직원 don't share the primary key하는 경우 부모 테이블을 가리키는 자식 테이블의 한 FK 이 경우, Hibernate에게 협회의 어느 쪽이 소유하고 있는지를 지시 할 필요가있다. (가장 자주 그것은 자식 쪽이다.)

+0

나는 외래 키가 어떻게 작동하는지 알고있다. 내 질문은 언제 property-ref를 사용할 것인가이다. 그래서 u는 Person과 employee와 같은 부모 - 자식 관계를 가질 때 child side의 property-ref를 사용할 때 자식이 자신을 관계 요? 하지만 내 예제에서는 Employee와 Project (직원에게 할당)와 같은 상속 관계가 없으므로 여기서 property-ref를 사용해야합니다. 그렇지 않으면 예제에서이 property-ref를 사용한다는 점에서 Pluralsight의 Hibernate 비디오 자습서를 보지 못했습니다. 연습을 위해 나는이 속성을 제거 했으므로 여전히 여기에서 묻습니다. –

+0

property-ref가 없으면 child.parent_id 대신 child.id를 사용하여 링크가 완료됩니다. 그래서 당신이 매핑을 어떻게 할 것인지에 달려 있습니다. –

+0

ok 코드를 체크 한 다음 답으로 표시하겠습니다 ... –