7.2.2. 一对一(one to one)

基于外键关联的单向一对一关联单向多对一关联几乎是一样的。唯一的不同就是单向一对一关联中的外键字段具有唯一性约束。

  1. <class name="Person">
  2. <id name="id" column="personId">
  3. <generator class="native"/>
  4. </id>
  5. <many-to-one name="address"
  6. column="addressId"
  7. unique="true"
  8. not-null="true"/>
  9. </class>
  10. <class name="Address">
  11. <id name="id" column="addressId">
  12. <generator class="native"/>
  13. </id>
  14. </class>
  1. create table Person ( personId bigint not null primary key, addressId bigint not null unique )
  2. create table Address ( addressId bigint not null primary key )

基于主键关联的单向一对一关联通常使用一个特定的id生成器。(请注意,在这个例子中我们掉换了关联的方向。)

  1. <class name="Person">
  2. <id name="id" column="personId">
  3. <generator class="native"/>
  4. </id>
  5. </class>
  6. <class name="Address">
  7. <id name="id" column="personId">
  8. <generator class="foreign">
  9. <param name="property">person</param>
  10. </generator>
  11. </id>
  12. <one-to-one name="person" constrained="true"/>
  13. </class>
  1. create table Person ( personId bigint not null primary key )
  2. create table Address ( personId bigint not null primary key )