You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by jd...@db.apache.org on 2005/02/15 00:24:18 UTC

[Apache JDO Wiki] New: EmployeeInsuranceMapping

   Date: 2005-02-14T15:24:18
   Editor: MichelleCaisse
   Wiki: Apache JDO Wiki
   Page: EmployeeInsuranceMapping
   URL: http://wiki.apache.org/jdo/EmployeeInsuranceMapping

   no comment

New Page:

This is the proposed mapping for the employee/insurance bidirectional relationship.  Key features of this mapping are:
 *The insurance table contains a foreign key to the persons table.
 *The MedicalInsurance and DentalInsurance reference fields of Employee are mapped-by the employee field of Insurance.

{{{
<class name="PartTimeEmployee">
    <inheritance strategy="superclass-table"/>
    <field name="wage" column="wage"/>
</class>

<class name="FullTimeEmployee">
    <inheritance strategy="superclass-table"/>
    <field name="salary" column="salary"/>
</class>

<class name="Employee">
    <inheritance strategy="superclass-table"/>
    <field name="hiredate" column="hiredate"/>
    <field name="weeklyhours" column="weeklyhours"/>
    <field name="dentalInsurance" mapped-by="employee"/>
    <field name="medicalInsurance" mapped-by="employee"/>
    <field name="department" column="department">
                <foreign-key/>
    </field>
    <field name="fundingDept" column="fundingdept">
                <foreign-key/>
    </field>
    <field name="manager" column="manager">
                <foreign-key/>
    </field>
    <field name="mentor" column="mentor">
                <foreign-key/>
    </field>
    <field name="protege" column="protege">
                <foreign-key/>
    </field>
    <field name="hradvisor" column="hradvisor">
                <foreign-key/>
    </field>
    <field name="reviewedProjects" mapped-by="reviewers"/>
    <field name="projects" mapped-by="members"/>
    <field name="team" mapped-by="manager"/>
    <field name="hradvisees" mapped-by="hradvisor"/>
</class>
        
<class name="Person" table="persons">
    <inheritance strategy="new-table">
        <discriminator strategy="class-name" column="discriminator"/>
    </inheritance>
    <field name="personid" column="personid"/>
    <field name="firstname" column="firstname"/>
    <field name="lastname" column="lastname"/>
    <field name="middlename column="middlename"/>
    <field name="address">
        <embedded>
            <field name="street" column="street"/>
            <field name="city" column="city"/>
            <field name="state" column="state"/>
            <field name="zipcode" column="zipcode"/>
            <field name="country" column="country"/>
        </embedded>
    </field>
    <field name="phoneNumbers" table="employee_phoneno_type" >
        <join column="personid"/>
        <key column="type"/>
        <value column="phoneno"/>
    </field>
</class>

<class name="Insurance" table="insuranceplans">
    <inheritance strategy="new-table">
        <discriminator strategy="class-name" column="discriminator"/>
    <inheritance/>
    <field name="insid" column="insid"/>
    <field name="carrier" column="carrier"/>
    <field name="employee" column="empid">
         <foreign-key/>
    </field
</class>

<class name="DentalInsurance">
    <inheritance strategy="superclass-table"/>
    <field name="lifetimeOrthoBenefit" column="lifetimeOrthoBenefit"/>
</class>

<class name="MedicalInsurance">
    <inheritance strategy="superclass-table"/>
    <field name="planType" column="planType"/>
</class>
}}}