4

と の次のようなテーブル構造がEmployeeありDepartmentます。の複合キーには,のEmployee3 つの列がありますが、 部門には Employee の複合キーに一致する列が 2 つしかありません- , .EMP_IDDEPT_IDDEPT_CODEDEPT_IDDEPT_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

4

1 に答える 1

0

「結合する」という意味がよくわかりません...あなたの問題は、これに多少似ているように聞こえます...

https://forum.hibernate.org/viewtopic.php?f=1&t=985555

おそらく問題は、(提供していない) 参加しようとしている hql が正しくないことですか? 質問を明確にすることができれば、より良い答えが得られるかもしれません。

于 2012-08-27T23:27:57.303 に答える