Is there something wrong in this mapping. The parent is saved but Child failed to Save.
This is a simple one-to-many mapping of Dept(one) and Emp (Many) with composite PK and no FK.
I am using composite PK class. Do we really need the existence of FK for mapping ?
dept.hbm.xml
--------------------------------------------------------------------------------------
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="hello">
<class name="Dept" table="DEPT">
<composite-id name="key" class="DeptKey">
<key-property name="empno" type="string"/>
<key-property name="deptno" type="string"/>
</composite-id>
<property name="deptname" type="string"/>
<set name="emp" table="emp" inverse="true" cascade="all" lazy="false">
<key>
<column name="EMPNO" />
<column name="DEPTNO" />
</key>
<one-to-many class="Emp" />
</set>
</class>
</hibernate-mapping>
emp.hbm.xml
---------------------------------------------------------------
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="hello">
<class name="Emp" table="EMP">
<composite-id name="key" class="EmpKey">
<key-property name="empno" type="string"/>
<key-property name="deptno" type="string"/>
</composite-id>
<property name="sal" type="string"/>
<property name="loc" type="string"/>
<many-to-one name="dept" insert="false" update="false" cascade="save-update" class="Dept"/>
<column name ="empno"/>
<column name="deptno"/>
</many-to-one>
</class>
</hibernate-mapping>
In many-to-one mapping I had to set insert and update to false as Hibernate is giving following error -
*** Repeated column in mapping for entity: EMP column: EMPNO (should be mapped with insert="false" update="false")
Persistence class and Client is here -
Complete Code