首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Hibernate表联系关系-one-to-one

2012-11-22 
Hibernate表关联-one-to-one三种实现方式,已顾客与房间的关系为例:0. DB代码:??? DROP?TABLE?IF?EXISTS C

Hibernate表关联-one-to-one

三种实现方式,已顾客与房间的关系为例:

0. DB代码:

??? DROP?TABLE?IF?EXISTS 'Customer';?

??? CREATE?TABLE 'Customer' (

??? 'id class="com.domain.Customer"cascade="all">

??????????????? </class>

???? </hibernate-mapping>?

???? Customer.hbm.xml:

???? <hibernate-mapping>

?????????? <class?name="com.domain.Customer"?table="Customer"?catalog="Temp">

??????????????? <id?name="id"?type="java.lang.Integer">

????????????????????? <column?name="id"?/>

????????????????????? <!--

????????????????????? <generator?class="native"cascade="all"?/>

?????????????????????? -->

????????????????????? <!--Customer的主键由Room的主键决定,可以看成是外键-->?????

????????????????????? <generator?class="foreign">

????????????????????????????? <param?name="property">room</param>

????????????????????? </generator>

????????????????????? <!--或者使用下面的方式-->

????????????????????? <generator class="increment"></generator>

??????????????? </id>???????????????

?

??????????????? <property?name="name"?type="java.lang.String">

????????????????????? <column?name="name"?not-null="true"?/>

??????????????? </property>

??????????????? <!--?many开头的是代表该表持有外键?-->

??????????????? <!--

??????????????? <many-to-one??name="rom"?class="com.domain.Room"??unique="true">

????????????????????? <column?name="customer_id"?/>

??????????????? </many-to-one>?

??????????????? -->

??????????????? <one-to-one name="rom"?class="com.domain.Room"/>

??????????????? <!--或者使用下面的方式-->

??????????????? <one-to-one name="rom"?class="com.domain.Room"constrained="true"/>

???????????? </class>

????? </hibernate-mapping>?

4. 通过关系表实现:

??? create?table room_cust(?

????????????? room_id?int?not?null,??

? ? ? ? ?? ?? cust_id?int?not?null

??? )ENGINE=InnoDB?DEFAULT?CHARSET=utf8;?

??? 配置文件:

??? <!--optional="true"的意思是只有当room_id?和?cust_id?都不为空时才在关系表里插入。这样也会插入2遍,

?????? 所以需要inverse="true"把一方设置为虚的。即不让插入到关系表中-->

??? <join?table="room_cust"?optional="true"?inverse="true">

????????????? <key?column="cust_id"/>

????????????? <many-to-one?name="room"?column="room_id"?unique="true"/>

??? </join>?

?

?

热点排行