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.