I didn't find a direct way to reach what you want (but though I'm quite experienced I wouldn't claim that I didn't miss "the simple solution"). The solution I found uses a set with one element.
The mapping would look as follows:
Code:
<class name="Location" table="LOCATION" lazy="false">
<id name="id" type="java.lang.Long" column="WIDGET_ID" unsaved-value="null">
<generator class="native"/>
</id>
<set name="address" cascade="all" access="field">
<key column="LOCATION_ID" not-null="true" unique="true"/>
<one-to-many class="Address" />
</set>
</class>
<class name="Address" table="ADDRESS" lazy="false">
<id name="id" type="java.lang.Long" column="WIDGET_ID" unsaved-value="null">
<generator class="native"/>
</id>
</class>
Note that the key column is declared unique, which garanties the one to one relationship.
In Location you could hide the fact that you're actually using a set by writing the getter and setter that hide the operations on the set and return an Address object.
Was the best I could - hope this helps you :-)
Erik