と の次のようなテーブル構造がEmployee
ありDepartment
ます。の複合キーには,のEmployee
3 つの列がありますが、
部門には Employee の複合キーに一致する列が 2 つしかありません- , .EMP_ID
DEPT_ID
DEPT_CODE
DEPT_ID
DEPT_CODE
<class name="com.test.Employee" table="EMPLOYEE">
<composite-id>
<key-property column="EMP_ID" name="empId" type="java.lang.Integer"/>
<key-property column="DEPT_ID" name="deptID" type="java.lang.Integer"/>
<key-property column="DEPT_CODE" name="deptID" type="java.lang.Integer"/>
</composite-id>
<property column="EMP_NAME" name="empName" type="java.lang.String"/>
<list name="departments" table="DEPARTMENT" fetch="select">
<key>
<column name="DEPT_ID"></column>
<column name="DEPT_CODE"></column>
</key>
<index/>
<one-to-many class="com.test.Department" />
</list>
</class>
<class name="com.test.Department" table="DEPARTMENT">
<composite-id>
<key-property column="DEPT_ID" name="deptID" type="java.lang.Integer"/>
<key-property column="DEPT_CODE" name="deptID" type="java.lang.Integer"/>
</composite-id>
<property column="DEPT_NAME" name="deptName" type="java.lang.String"/>
</class>
これら 2 つのテーブルを結合したいのですが、主キーEMP_ID
がマップされていないというエラーが表示されます。EMP_ID
マッピング xmlの「リスト部門キー列」の下に配置すると、アプリケーションは読み込まれますが、テーブルEmployee
に一致する列がありません。Department
それで、これに対処する方法はありますか。複合キーを持つ 1 つのテーブルと、主キーがその複合キーのサブセットである他のテーブルがある場合に、hibernate マッピング ファイルでjoin
/を構成する方法。one-to-many mapping