多对多关联关系的使用
来源:互联网 发布:sql数据库存图片 编辑:程序博客网 时间:2024/05/16 00:36
来源:http://www.blogjava.net/keweibo/articles/171544.html
多对多只有双向关系(如果添加一张辅助表来存储多对多的单向关系也可以,但是不值得
这么做,因为多对多的单向关系可以用多对一或者一对多的半向关系来表达,不必要添加一张
辅助表),如学生与课程之间,一个学生对应多个课程,一个课程也可以被多个学生选择。
Student.hbm.xml
...
<hibernate-mapping>
<class name="model.Student" table="student">
<id name="id" unsaved-value="null">
<generator class="uuid.hex"/>
</id>
<property name="name" type="string"/>
<set name="courses"
table="student_course"
cascade="save-update"
>
<key column="stu_id"/>
<many-to-many class="model.Course
column="course_id"/>
</set>
<class>
</hibernate-mapping>
多对多关系需要配置的属性比较多一些。初学者经常会把<key column=""/>和<column="">的值
弄反了,其实只要记住一个原则:<key column="">总是和本身类的主键id对应,而<column="">
总是与关联类的主键id相对应。对于上面的Student.hbm.xml,关联类是Course,本身类则是Student
Course.hbm.xml
...
<hibernate-mapping>
<class name="model.Course" table="course">
<id name="id" unsaved-value="null">
<generator class="uuid.hex"/>
</id>
<propery name="name" type="string"/>
<set name="students"
table="student_course"
cascade="save-update"
>
<key columm="course_id"/>
<many-to-many class="model.Student"
column="stu_id"/>
</set>
</class>
</hibernate-mapping>
注意:Student与Course的cascade都设置为save-update,在多对多的关系中,all,delete等
cascade是没有意义的,因为多对多关系中,并不能因为父对象被删除,而造成被包括的子对象
被删除,因为可能还有其他的父对象参考了这个子对象。
另外,在多对多关系中,如果双方都有控制权(也就是双方都没有设置inverse="true"),则
双方都要把关联关系反映到数据库。必须在某一方设置inverse="true",然后在执行语句时使用
主控方进行操作(也就是没有设置inverse="true"的那一方)。
- 多对多关联关系的使用
- Hibernate一对多、多对一关联关系的使用
- Hibernate多对多关联关系的使用
- Hibernate的多对多关联关系
- Hibernate,多对多的关联关系
- Hibernate的多对多关联关系
- Hibernate关联关系之一对多关联
- 多对多关联关系
- 多对一关联关系
- hibernate关联关系之多对多关系
- Hibernate -- 映射实体关联关系(多对多关联关系)
- Hibernate关联关系映射之一对多关联关系
- Hibernate关联关系映射之多对多关联关系
- 多对多关系的多表关联查询
- Hibernate完成多对多的关联关系映射
- 关联映射的关系(多对一)
- Hibernate中关联关系:多对一的学习
- Hibernate建立多对一的单向关联关系
- 搜索引擎第二讲 Compas+spring+hibernate的综合实例讲解和单独Compass实例讲解
- 搜索引擎第三讲 完成单个POJO对象的Compass增删改查应用
- 搜索引擎第四讲 compass各个配置文件详解
- fieldset的使用
- 搜索引擎第五讲 从Lucene版的CRUD来理解Compass的原理
- 多对多关联关系的使用
- 搜索引擎第六讲 Lucene版的CRUD详解
- 新完善的NumberEdit控件,能设定小数位和整数位
- 搜索引擎第七讲 Compass-Lucene版的构建索引时的参数详解
- 十月的In语
- 让Proxool连接池支持自动重连接
- asp.net 2.0 读写配置文件(说明二)
- SSL第一讲 openSSL的应用
- PHP 分页类 潇湘博客