We are doing something similar in our system. This is one of the few things I have working, but just to warn you it seems to break merge(). What you're doing is a bit different because you're using IDENTITY on your second column. I'm curious why this needs to be a composite id if you're using an IDENTITY? The IDENTITY should be the primary key. Then use a foreign key relationship.
Code:
Client:
<one-to-one name="mailingAddress" class="Address" cascade="all" constrained="false" lazy="false" outer-join="false">
<formula>client_id</formula>
<formula>2</formula>
</one-to-one>
Address:
<composite-id unsaved-value="undefined">
<key-many-to-one name="client"
column="client_id"/>
<key-property name="addressType"
column="address_type_c"/>
</composite-id>
_______
Todd V