hibernate4之一對一關係映射(二)

示例:一個用戶(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
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章