가능한 한 간단하고 쉽게 따르도록 고안된 인위적인 예제로 내 문제를 설명하겠습니다. 그러나 내 진짜 문제는 레거시 코드에 있으므로 스키마 또는 아무것도 변경할 수 없습니다.클래스 및 집합 매핑 당 최대 절전 모드 표
내 코드에는 클래스 hiarachy 테이블이 있습니다. Customer1과 Customer2를 말하십시오. 고유 한 판별 자 값을가집니다 (1과 2를 각각 지정). 각 고객은 0 개 이상의 주소를 가질 수 있습니다. 주소는 단일 테이블에 저장됩니다. 이 테이블은 고객 ID 및 고객 판별 자 값에 대한 참조를 저장합니다. 주소 매핑에서 나는 가지고있다 :
<any name="customer" meta-type="CustomerMetaType" id-type="long">
<column name="customerid" not-null="true" />
<column name="discriminator" not-null="true" />
</any>
이것은 괜찮다. 그러나 제 1 고객 및 customer2 매핑에 내가 가진 :이 수정에서 내 최초의 시도가 여러 키를 추가했다 2. ID 1로드 1 고객은 ID로 customer2에 대한 주소를 선택할 것이라고 문제를 가지고
<set name="addresses" outer-join="false">
<key column="customerid"/>
<one-to-many class="Address"/>
</set>
설정 : 그러나
<key>
<column name="customerid"/>
<column name="discriminator"/>
</key>
나는 다음과 같은 예외가 얻을 일 :
org.hibernate.MappingException : 외래 키가 참조하는 기본 키 열 수가 같아야합니다)를
누구에게도 해결책이 있습니까? 거기 descriminator 가상 합성 키의 일종으로 클래스에 매핑하는 방법이 있나요? 아니면 특정 매핑 테이블을 사용하여 특정 고객 테이블로 제한 할 수 있습니까?
완벽한, 감사합니다! – samblake