有連接表和無連接表主要區別在於多的一端,id列即作爲外鍵列參照street表的id主鍵列,也作爲district_street連接表的主鍵列,保證了多的一方只能關聯一個實體
主要是Street表的映射文件與單向多對一關聯(無連接表)不同,使用<join../>並增加<key.../>子元素來映射外鍵,同時增加<many to one.../>用於映射多對一關聯實體
street類映射文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="org.jbit.pojo.Street" table="street">
<id name="id" type="java.lang.Integer">
<column name="id"/>
<generator class="sequence">
<param name="sequence">STREET_SEQUENCE</param>
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" length="50" not-null="true"/>
</property>
<join table="district_street">
<key column="id"/>
<many-to-one name="district" class="org.jbit.pojo.District">
<column name="district_id" not-null="true"/>
</many-to-one>
</join>
</class>
</hibernate-mapping>