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

来源:互联网 发布:温莎公爵知乎 编辑:程序博客网 时间:2024/05/23 18:33

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


0 0
原创粉丝点击