고유 ID가 d1Id 인 기본 테이블이 있습니다. d1Id는 D1 레코드를 고유하게 식별하며 테이블의 기본 키이기도합니다. 나는 기본 키로 d2seq을 가지고있는 D2 인 테이블 2를 가지고 있지만 D2는 또한 외래 키 제약 조건을 가지고있는 고유 한 d1Id를 가지고있다. 그러나 나는 그것이 유일하고 이드의 것이 확실하다는 것을 확실히 알고 있습니다. 내가 최대 절전 모드를 사용하여 D1 호출을 할 때 d2 값을 가져 오려고 노력 중이며 컴파일 타임 오류가 발생하면서 올바른 hbm을 얻을 수 없습니다.외래 키에 일대일 최대 절전 모드
문제의 핵심은 2 개의 테이블 사이에 일대일 관계를 설정해야하는데 두 번째 테이블에서 조인 할 ID는 테이블의 기본 키가 아닙니다. 모든 예제는 Google 검색을 본 적이 두 번째 테이블의 ID도 두 번째 테이블의 기본 키입니다 사건을했습니다. 지금 가지고있는 HBM 파일을 보여 드리겠습니다. D2에 대한 내 두 번째 HBM에서
<hibernate-mapping default-lazy="true"
package="com.xxx.xx.customer.dto">
<class name="D1" table="D1" dynamic-update="true">
<id name="dString" column="DID" type="java.lang.String"
unsaved-value="null" length="9">
<generator class="assigned"/>
</id>
...
<one-to-one name="d2" class="com.xxx.xx.customer.dto.D2" >
<!-- column name="d1Id" /-->
</one-to-one>
, 난 여기 갇혀있어
<hibernate-mapping default-lazy="true" package="com.xxx.xx.customer.dto">
<class name="D2" table="D2" dynamic-update="true">
<id name="id" column="D2ID" type="integer">
<generator class="native">
<param name="sequence">D2SEQ</param>
</generator>
</id>
<id name="d1id" column="D1ID" type="java.lang.String"
unsaved-value="null" length="9">
<generator class="assigned"/>
</id>
>는 기본 키 및이 아니다 일 때문에 분명 여기 d1id의 두 번째 id 필드를 사용할 수 없습니다
> 나는 이미 전에 그것을 사용했습니다. 그렇다면이 HBM 파일은 어떻게 작동해야합니까?
HBO를 제 위치에 갖게되면 DTO를 통해 D1을 쿼리하는 동안 D2 정보를 얻고 싶습니다. 어떻게해야합니까?