Hibernate基于主键的多对多映射2015-11-11

本文详细介绍了如何使用Hibernate实现多对多的关系映射,包括数据库表的设计、实体类的创建以及配置文件的设置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate 多对的映射,由于在数据库中建表与表之间的关系比较复杂且容易出错,故推荐用powerdesiger建表

在数据库中建立两种基本的实体类表Student表和Course表,建表结构如下

在myeclipse中使用反转工程,生成实体类Student和Course

修改Student类

在Student类中增加Course类的set属性,具体如下

Class Student {

private  Set Course=new HashSet();

同时提供getter 和setter方法

}

在Student.hbm.xml中映射Set属性

<set name="coursesSet" table="choose" lazy="false" inverse="false" cascade="save-update">
        <key column="student_id" not-null="true"></key>
        <many-to-many column="course_id" class="com.hibtest2.entityonetooneunique.Course"></many-to-many>

      </set>

其中。,name属性是指在Student类的Set属性的名字,laze属性是指不采用延迟加载,cascade属性是指可以采用级联操作,table是指两个实体类多对多产生的一张共同表的名字,

在Set下增加两个子属性key:column是指此Student类在共同表上的字段名

many-to-many中column是指多对多映射的另一类的字段名,class属性是指多对多映射的另一个类的全类名

相信自己,努力不会白费,总会有收获的季节,现在的我们都处在播种以及维护浇水的日子里,成功离我们一定都不会遥远


同理在Course类中定义Set属性

Class Course {

private  Set student =new HashSet();

同时提供getter和Setter方法

}

在Course.hbm.xml中映射 Set属性

<set name="student" table="choose" lazy="false" inverse="true">
        <key column="course_id" not-null="true"></key>
        <many-to-many column="student_id" class="com.hibtest2.entityonetooneunique.Student"></many-to-many>
        </set>

原理同上

简而言之就是在哪一个类增加罗Set属性,就要映射该属性

在映射中,set 属性中name属性是指本身类的set名字, table是指共同的表名,

在set的子属性中,key属性中column是指此类在表中对应的字段名

在many-to-many中是另一方的信息,另一方在共同表的字段名。class是另一方的全类名

在测试VDE过程中只需注意是那一个类在控制,即可以执行级联操作


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值