示例:一個用戶(user) 住一個地址(address),一個地址有一個用戶。
public class User{ private Integer id; private String name; private Address address; //getter and setter }
public class Address { private Integer id; private String addressName; private User user; //getter and setter }
用XML映射
<hibernate-mapping package="com.shen.hibernate4.entity"> <class name="User" table="tb_user"> <id name="id"> <generator class="identity" /> </id> <property name="name" /> <!--用外鍵來完成一對一關聯,限制多方最多只能有一條記錄參考到一方,這是多對一的一個特列。所以設置 many-to-one 的 unique 的屬性爲 true --> <many-to-one name="address" class="Address" column="address_id" unique="true"/> </class> </hibernate-mapping> <hibernate-mapping package="com.shen.hibernate4.entity"> <class name="Address" table="tb_address"> <id name="id"> <generator class="identity"/> </id> <property name="addressName" column="address_name"/> <!-- property-ref 屬性 指定引用關聯類的屬性 --> <one-to-one name="user" class="User" property-ref="address" /> </class> </hibernate-mapping>
用@Annotation映射
@Entity @Table(name = "tb_user") public class User{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; @OneToOne @JoinColumn(name = "address_id", unique = true) private Address address; //getter and setter }
@Entity @Table(name = "tb_address") public class Address { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String addressName; @OneToOne(mappedBy = "address") private User user; //getter and setter }