In hibernate 3 you can do stuff like:
Code:
<class name="Person">
       <id name="name"/>
       <one-to-one name="address" cascade="all" constrained="false">
           <formula>name</formula>
           <formula>'HOME'</formula>
       </one-to-one>
       <one-to-one name="mailingAddress" constrained="false">
           <formula>name</formula>
           <formula>'MAILING'</formula>
       </one-to-one>
   </class>
    <class name="Address" batch-size="2"
           check="addressType in ('MAILING', 'HOME', 'BUSINESS')">
       <composite-id>
           <key-many-to-one name="person"
                   column="personName"/>
           <key-property name="type"
                   column="addressType"/>
       </composite-id>
       <property name="street"/>
       <property name="state"/>
       <property name="zip"/>
   </class>
that should solve your issues i think.