From the Hibernate Reference Documentation version 3.0.5 PDF, Section 8.4.2:
Quote:
A bidirectional one-to-one association on a primary key uses the special id generator.
Code:
<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<one-to-one name="address"/>
</class>
<class name="Address">
<id name="id" column="personId">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<one-to-one name="person" constrained="true"/>
</class>
In your case, it would probably be like this:
Code:
<class name="User">
<id name="id" column="userId">
<generator class="native"/>
</id>
<one-to-one name="userProfile"/>
</class>
<class name="UserProfile">
<id name="id" column="userId">
<generator class="foreign">
<param name="property">user</param>
</generator>
</id>
<one-to-one name="user" constrained="true"/>
</class>
Note, because of your choice in table names, you may want to use backtics in your mapping properties so that keywords are properly enclosed. I don't know many databases that don't have USER as a keyword. For instance, instead of
Code:
<class name="User" table="USER" schema="TEST">
it would be better to use
Code:
<class name="User" table="`USER`" schema="TEST">
That way the queries will surround the table name USER with double quotes or brackets, as necessitated by your database.