<id name="id">
<generator class="assigned"/>
...</id>
<discriminator type="string" column="CONCRETE_TYPE" not-null="true"/>
<version name="updateSequence" unsaved-value="null" type="integer" access="property"/>
<property name="emailAddress" type="string"/>
<property name="firstName" type="string"/>
<property name="lastName" type="string"/>
<property name="middleName" type="string"/>
<property name="title" type="string"/>
<property name="suffix" type="string"/>
<set name="phone" lazy="false" cascade="all">
<key column="PERSON_ID"/>
<one-to-many class="Phone"/>
...</set>
<set name="address" lazy="false" cascade="all">
<key column="PERSON_ID"/>
<one-to-many class="Address"/>
...</set>
<subclass name="Customer">
<property name="emailNewsletter" type="boolean"/>
<property name="registered" type="date"/>
<component name="customerProfile" class="petstore.entity.impl.ProfileImpl">
<property name="bannerPreference" type="string"/>
<property name="myListPreference" type="string"/>
<property name="preferredLanguage" type="string"/>
...</component>
<subclass name="petstore.entity.impl.CustomerImpl" discriminator-value="Customer"/>
...</subclass>
<subclass name="SupplierContact">
<property name="supplierCompanyName" type="string"/>
<subclass name="petstore.entity.impl.SupplierContactImpl" discriminator-value="SupplierContact"/>
...</subclass>
<subclass name="petstore.entity.impl.PersonImpl" discriminator-value="Person"/>