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过程中只需注意是那一个类在控制,即可以执行级联操作