您的位置:首页 > 其它

在Hibernate中配置多对多连接表

2008-07-11 11:49 106 查看
接前文在Hibernate中配置一对多连接表

其中表roomusers更改如下:

create table ROOMUSERS(

USERID NUMBER(4),

ROOMID NUMBER(4) not null

);

映射文件配置如下:

Room.hbm.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

Mapping file autogenerated by MyEclipse Persistence Tools

-->

<hibernate-mapping package="com.cosmow.hibernatedemo2.entity">

<class name="Room" table="ROOM" schema="STORE">

<id name="id" type="java.lang.Long">

<column name="ID" precision="4" scale="0" />

<!-- Oracle数据库增长方式序列 -->

<generator class="sequence">

<param name="sequence">ROOM_SEQ</param>

</generator>

</id>

<!-- 映射roomnumber属性 -->

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

<column name="ROOMNUMBER" length="11" not-null="true" />

</property>

<!-- 映射name属性 -->

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

<column name="NAME" length="32" not-null="true" />

</property>

<!-- 通过连接表的多端,因此需要table属性为roomusers -->

<set name="users" cascade="all" table="roomusers">

<!-- 该key的字段为连接表中的字段,作为外键 -->

<key column="roomid" />

<!-- 配置多对多 -->

<many-to-many class="Userinfo" column="userid" />

</set>

</class>

</hibernate-mapping>

Userinfo.hbm.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

Mapping file autogenerated by MyEclipse Persistence Tools

-->

<hibernate-mapping package="com.cosmow.hibernatedemo2.entity">

<class name="Userinfo" table="USERINFO" schema="STORE">

<id name="id" type="java.lang.Long">

<column name="ID" precision="4" scale="0" />

<!-- Oracle数据库增长方式序列 -->

<generator class="sequence">

<param name="sequence">USERINFO_SEQ</param>

</generator>

</id>

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

<column name="NAME" length="32" not-null="true" />

</property>

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

<column name="SEX" length="2" />

</property>

<set name="rooms" cascade="all" table="roomusers">

<key column="userid" />

<many-to-many class="Room" column="roomid" />

</set>

</class>

</hibernate-mapping>

测试代码如下:

package com.cosmow.hibernatedemo2.demo;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

import org.hibernate.Session;

import org.hibernate.Transaction;

import com.cosmow.HibernateSessionFactory;

import com.cosmow.hibernatedemo2.entity.Room;

import com.cosmow.hibernatedemo2.entity.Userinfo;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: