對於絕大部分單向N--->1關聯而言,使用基於外鍵的關聯映射已經足夠了。但由於底層資料庫建模時也可以使用串連表來建立這種關聯關係,因此Hibernate也為這種關聯關係提供了支援。
如果需要使用串連表來映射單向N--->1關聯,則需要顯式使用<join.../>元素,該元素用於強制將一個類的屬性對應到多張表中,通常也用於強制使用串連表。使用<join.../>元素時需要指定一個table屬性,用於指定串連表的表名。
本篇文章承接上一篇文章。
我們先將test庫裡的表刪除:
除了Person.hbm.xml檔案需要修改,其餘所有檔案不變。
Person.hbm.xml :
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="db.domain"> <class name="Person" table="persons"> <id name="id" type="integer"> <generator class="identity"></generator> </id> <property name="name" type="string"> <column name="name"></column> </property> <property name="age" type="integer"> <column name="age"></column> </property> <join table="person_address"> <key column="person_id"/> <many-to-one name="address" class="Address" column="address_id" cascade="all"/> </join> </class></hibernate-mapping>
運行Test.java,查看資料庫: