连接表
 连接表就是保存多个关系在一张表中,而实体表中将不会出现与关系有关的任何信息。

    1.表结构如下:

    ROOM(房间表)
在Hibernate中配置一对多连接表create table ROOM (
在Hibernate中配置一对多连接表       ID 
NUMBER(4not null,
在Hibernate中配置一对多连接表       ROOMNUMBER 
VARCHAR2(11not null,
在Hibernate中配置一对多连接表       NAME 
VARCHAR2(32not null,
在Hibernate中配置一对多连接表       
constraint ROOM_PK primary key (ID)
在Hibernate中配置一对多连接表);

    USERINFO(用户表)
在Hibernate中配置一对多连接表create table USERINFO(
在Hibernate中配置一对多连接表       ID 
NUMBER(4not null,
在Hibernate中配置一对多连接表       NAME 
VARCHAR2(32not null,
在Hibernate中配置一对多连接表       SEX 
VARCHAR2(2),
在Hibernate中配置一对多连接表       
constraint USERINFO_PK primary key (ID)
在Hibernate中配置一对多连接表);

    连接表
在Hibernate中配置一对多连接表create table ROOMUSERS(
在Hibernate中配置一对多连接表       USERID 
NUMBER(4not null,
在Hibernate中配置一对多连接表       ROOMID 
NUMBER(4not null,
在Hibernate中配置一对多连接表       
constraint ROOMUSERS_PK primary key (USERID)
在Hibernate中配置一对多连接表);

     一对多连接表映射文件
 Room.hbm.xml(一端的配置)
在Hibernate中配置一对多连接表<?xml version="1.0" encoding="utf-8"?>
在Hibernate中配置一对多连接表
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
在Hibernate中配置一对多连接表"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
在Hibernate中配置一对多连接表
<!-- 
在Hibernate中配置一对多连接表    Mapping file autogenerated by MyEclipse Persistence Tools
在Hibernate中配置一对多连接表
-->
在Hibernate中配置一对多连接表
<hibernate-mapping package="com.cosmow.hibernatedemo2.entity">
在Hibernate中配置一对多连接表    
<class name="Room" table="ROOM" schema="STORE">
在Hibernate中配置一对多连接表        
<id name="id" type="java.lang.Long">
在Hibernate中配置一对多连接表            
<column name="ID" precision="4" scale="0" />
在Hibernate中配置一对多连接表            
<!-- Oracle数据库增长方式序列 -->
在Hibernate中配置一对多连接表            
<generator class="sequence">
在Hibernate中配置一对多连接表                
<param name="sequence">ROOM_SEQ</param>
在Hibernate中配置一对多连接表            
</generator>
在Hibernate中配置一对多连接表        
</id>
在Hibernate中配置一对多连接表        
<!-- 映射roomnumber属性 -->
在Hibernate中配置一对多连接表        
<property name="roomnumber" type="java.lang.String">
在Hibernate中配置一对多连接表            
<column name="ROOMNUMBER" length="11" not-null="true" />
在Hibernate中配置一对多连接表        
</property>
在Hibernate中配置一对多连接表        
<!-- 映射name属性 -->
在Hibernate中配置一对多连接表        
<property name="name" type="java.lang.String">
在Hibernate中配置一对多连接表            
<column name="NAME" length="32" not-null="true" />
在Hibernate中配置一对多连接表        
</property>
在Hibernate中配置一对多连接表        
<!-- 通过连接表的一端,因此血药table属性为roomusers -->
在Hibernate中配置一对多连接表        
<set name="users" cascade="all" table="roomusers">
在Hibernate中配置一对多连接表            
<!-- 该key的字段为连接表中的字段,作为外键 -->
在Hibernate中配置一对多连接表            
<key column="roomid" />
在Hibernate中配置一对多连接表            
<!-- 配置多对多 -->
在Hibernate中配置一对多连接表            
<!-- 但是unique属性为true,表示userid字段为不可重复,保证一对多关系 -->
在Hibernate中配置一对多连接表            
<many-to-many class="Userinfo" column="userid"
在Hibernate中配置一对多连接表                unique
="true" />
在Hibernate中配置一对多连接表        
</set>
在Hibernate中配置一对多连接表    
</class>
在Hibernate中配置一对多连接表
</hibernate-mapping>
在Hibernate中配置一对多连接表

    Userinfo.hbm.xml(多端的配置)
在Hibernate中配置一对多连接表<?xml version="1.0" encoding="utf-8"?>
在Hibernate中配置一对多连接表
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
在Hibernate中配置一对多连接表"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
在Hibernate中配置一对多连接表
<!-- 
在Hibernate中配置一对多连接表    Mapping file autogenerated by MyEclipse Persistence Tools
在Hibernate中配置一对多连接表
-->
在Hibernate中配置一对多连接表
<hibernate-mapping package="com.cosmow.hibernatedemo2.entity">
在Hibernate中配置一对多连接表    
<class name="Userinfo" table="USERINFO" schema="STORE">
在Hibernate中配置一对多连接表        
<id name="id" type="java.lang.Long">
在Hibernate中配置一对多连接表            
<column name="ID" precision="4" scale="0" />
在Hibernate中配置一对多连接表            
<!-- Oracle数据库增长方式序列 -->
在Hibernate中配置一对多连接表            
<generator class="sequence">
在Hibernate中配置一对多连接表                
<param name="sequence">USERINFO_SEQ</param>
在Hibernate中配置一对多连接表            
</generator>
在Hibernate中配置一对多连接表        
</id>
在Hibernate中配置一对多连接表        
<property name="name" type="java.lang.String">
在Hibernate中配置一对多连接表            
<column name="NAME" length="32" not-null="true" />
在Hibernate中配置一对多连接表        
</property>
在Hibernate中配置一对多连接表        
<property name="sex" type="java.lang.String">
在Hibernate中配置一对多连接表            
<column name="SEX" length="2" />
在Hibernate中配置一对多连接表        
</property>
在Hibernate中配置一对多连接表        
<!-- 使用join来配置多对一的连接,以table属性来表示连接表的多对一,连接表为roomusers -->
在Hibernate中配置一对多连接表        
<!-- optional属性表示这是一个外连接,inverse属性可以出现在一端和多端,这里选择出现在多端,效果相同 -->
在Hibernate中配置一对多连接表        
<join table="roomusers" optional="true" inverse="true">
在Hibernate中配置一对多连接表            
<!-- 该key的字段为连接表中的字段,作为外键 -->
在Hibernate中配置一对多连接表            
<key column="userid" />
在Hibernate中配置一对多连接表            
<!-- 连接表中配置多对一,对应的字段为roomid -->
在Hibernate中配置一对多连接表            
<many-to-one name="room" column="roomid" not-null="true" />
在Hibernate中配置一对多连接表        
</join>
在Hibernate中配置一对多连接表    
</class>
在Hibernate中配置一对多连接表
</hibernate-mapping>
在Hibernate中配置一对多连接表

使用连接表最大的不同如下:
一端:
1.在<set>元素中需要增加table属性,以表示这是一个连接表的关系。
2.将不使用连接表一对多的<one-to-many>,改为<many-to-many>,并增加unique属性
3.在<set>元素中的所有字段都将针对连接表(table属性所指定的表)
多端:
1.使用<join>元素来配置多端的连接。
2.在<join>元素中,所有字段都针对连接表(table属性所指定的表)


测试代码如下:
实体类Room
在Hibernate中配置一对多连接表package com.cosmow.hibernatedemo2.entity;
在Hibernate中配置一对多连接表
在Hibernate中配置一对多连接表
import java.util.Set;
在Hibernate中配置一对多连接表
}

实体类Userinfo
在Hibernate中配置一对多连接表package com.cosmow.hibernatedemo2.entity;
在Hibernate中配置一对多连接表
}

test
    }

相关文章:

  • 2021-04-11
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2021-07-23
  • 2021-10-27
  • 2021-10-13
猜你喜欢
  • 2021-08-05
  • 2021-06-28
  • 2022-12-23
  • 2022-02-09
  • 2021-06-08
相关资源
相似解决方案