您的位置:首页 > 其它

Hibernate的关联关系映射:(多对多)

2018-01-05 13:10 309 查看
1.创建实体

//学生类

public class Student {
private Integer sid;
private String sname;
// 学生选择多门课程.
private Set<Course> courses = new HashSet<Course>();}

//课程类

public class Course {
private Integer cid;
private String cname;
// 课程可以被多个学生选择:
private Set<Student> students = new HashSet<Student>();
注意:学生和课程是多对多的(事实上在数据库会产生三个表:1.学生表2.课程表3.学生课程关系表)
xml配置:
<!-- ORM元数据  表对象关系映射文件
package : 配置该配置文件中类所在的包.  -->
<hibernate-mapping package="com.ssml.dentity" >
<class name="Course" table="t_course"  >
<id name="cid" column="id"    >
<generator class="native"></generator>
</id>
<property name="cname" column="name" ></property>

<set name="students" table="t_student_course" inverse="true" >
<key column="cid" ></key>
<many-to-many class="Student" column="sid"  ></many-to-many>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping package="com.ssml.dentity" >
<class name="Student" table="t_student"   >
<id name="sid" column="id"    >
<generator class="native"></generator>
</id>
<property name="sname" column="name" ></property>

<!-- 多对多关系 -->
<!--
set 表达集合
name: 集合的属性名
table:多对多中间表的表名
key 表达外键
column:引用我的外键名
many-to-many 表达多对多
class : 集合引用方的类型
column:对方在中间表的外键名
-->
<set name="courses" table="t_student_course" inverse="false" cascade="save-update"  >
<key column="sid" ></key>
<many-to-many class="Course" column="cid" ></many-to-many>
</set>

</class>
</hibernate-mapping>
运行结果:





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