4

Employee我有一种用于和的下表结构Department。的复合键Employee有三列 - EMP_ID, DEPT_ID,DEPT_CODE 但部门只有两列与 Employee 的复合键相匹配 - 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>

现在我想在这两个表上加入一个连接,但是它给出了错误,说主键EMP_ID没有映射。如果我将EMP_ID“列表部门键列”放在Employee映射 xml 中,应用程序会加载但表中没有匹配的列Department

那么有什么办法可以解决这个问题。如何在休眠映射文件中配置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 回答