有连接表和无连接表主要区别在于多的一端,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>