3
我對Employee
和Department
有以下表結構。 Employee
的組合密鑰有三列 - EMP_ID
,DEPT_ID
,DEPT_CODE
但該部門只有兩列與員工的組合鍵 - DEPT_ID
,DEPT_CODE
相匹配。在一對多Hibernate映射中使用部分複合鍵
<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
表中的匹配列。
所以有什麼辦法來解決這個問題。如何在hibernate映射文件中配置join
/one-to-many mapping
,此時您有一個包含複合鍵的表和其主鍵是該複合鍵的子集的其他表。
這個連接是怎麼樣的? – 2012-08-27 19:22:42
另一個問題:是否真的有必要擁有所有這些複合鍵?作爲ORM的NH不太喜歡複合鍵。 – 2012-08-27 19:25:53