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