I have a one-to-one relationship between a Person class and an
Employee. I expect the INSERT to cascade from the Person to the
Employee. However, this does not happen. I've tried cascade='all' and
cascade='save-update' on one-to-one relationship element, but it
didn't work. The source code is available on: http://bit.ly/gNlAWr

The structures of the my objects are as follows:

    public class Employee
    {
        private int _personID;
        private string _payrollNo;
        private int _holidays;
        private Person _personInstance;
    }

    public class Person
    {
        private int _personID;
        private string _surname;
        private string _forename;
        private int _age;
        private Employee _employeeInstance;
    }

Mapping files shown below:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Employee, Employee.DAL" table="`Employee`" >
    <id name="PersonID" column="`PersonId`">
      <generator class="foreign">
        <param name="property" >PersonInstance</param>
      </generator>
    </id>
    <property type="string" length="30" name="PayRollNo"
column="`PayRollNo`" />
    <property type="int" name="Holidays" column="`Holidays`" />
    <one-to-one name="PersonInstance"  class="Person, Employee.DAL"
constrained="true" />
  </class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Person, Employee.DAL" table="`Person`"  >
    <id name="PersonID" column="`PersonId`" type="int">
      <generator class="native" />
    </id>
    <property type="string" name="Forename" column="`Forename`" />
    <property type="string" name="Surname" column="`Surname`" />
    <property type="int" name="Age" column="`Age`" />
    <one-to-one name="EmployeeInstance" cascade="all"
class="Employee,Employee.DAL" />
  </class>
</hibernate-mapping>



Reply via email to