###1 <many-to-one name="group" column="groupid" />
many-to-one标签 会在多的一端加一个外键指向一的一端 name和属性名一致 column 是数据库字段名 指向一端的主键
cascade="all" delete update ... 采用cascade会级联操作主表User所引用的Group对象
###2<one-to-one>主键关联 默认了cascade属性 (双向 要互相持对方引用)
IdCard
<id name="id">
<generator class="native"/>
</id>
<property name="cardNo"/>
<one-to-one name="person"/>
Person
<id name="id">
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name"/>
<one-to-one name="idCard" constrained="true"/> //constrained表示 当前的主键上存在一个约束(Person的主键做为外键参照了idCard)
one-to-one 标签含义,指示Hibernate如何加载其引用对象 默认以主键加载(当前类的主键到idCard中的主键找对应的)
###3<one-to-one>唯一外键关联
IdCard
<id name="id">
<generator class="native"/>
</id>
<property name="cardNo"/>
<one-to-one name="person" property-ref="idCard"/>
//批示Hibernate如何加载其引用对象,默认以person的主键加载,这里要以person的idCard对应的键进行加载
Person
<id name="id">
<generator class="native"/> //不用主键做外键,它可以有自己的生成策略了
</id>
<property name="name"/>
<many-to-one name="idCard" unique="true"/> //多的一端加unique "多"的一端 就唯一了
###4 <one-to-many>
一对多关联 在多的一端加一个外键指向一的一端 维护的是 一到多 的关系 (与多对一关联一至,只是角度不同)
Classes
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<!--
<set name="students" inverse="true" cascade="all"> //加cascade则在存classes时会级联存student;inverse主要用在一对多和多对多关联上
-->
<set name="students" inverse="true"> //在多的一端(student的一端)加一个外键 inverse 关系反转,表明关系靠对端("多"端)
// 即 存class时不会保存它的set中的students 而存student时 会保存它的classes对象 存class时 它不知道有 studens(关系反转了)
<key column="classesid"/> //在多一端 加一个外键,指向它自身(这里指Classes)
<one-to-many class="com.hibernate.Student"/> //表明students中 存的实体对象类型 使Hibernate找Student.hbm.xml
</set>
Student
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="classes" column="classesid"/> //classesid 与 "一"端指定的字段一致 要与一对多中 key 指定的名字一致
###5<many-to-many>
多对多关联映身 通过中间表维护
User //单向时User映身写法
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
Role
<id name="id">
<generator class="native"/>
</id>
<property name="name">
<set name="users" table="t_user_role" order-by="userid"> //table 创建第三方表 set无序 order-by 可以排序
<key column="roleid"/> //column 含意是 在多的一端添加一个外键指向自身(在表中加一个字段,引用Role表的主键)
<many-to-many class="com.hibernate.User" column="userid"/>
</set>
User //双向时User映身写法
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="roles" table="t_user_role"> //table 要与另一端定义中间表名字一致
<key column="userid"/>
<many-to-many class="com.hibernate.Role" column="roleid"/>
</set>
分享到:
相关推荐
Hibernate双向一对一关联映射(注解版)
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
Hibernate 一对一外键单向关联 Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向...Hibernate 多对多双向关联
hibernate 双向 多对对,一对多,一对一 映射的 集合 hibernate所有映射的集合 非常有用
Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ...
1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1:一对多和多对一映射,举例说明: 学生和老师: 一个老师可以教多个学生 【一对多映射】 多个学生可以被一个老师教【多对一映射】 部门与员工: ...
hibernate双向一对多关联映射(注解版)
hibernate双向一对多关联映射(XML)
hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了
简单的Hibernate的N对N关系的映射,这里主要的只是谈到了关于如何映射一对一,多对一,多对多的单向和双向映射。 当然,其实所谓的单双向映射最终还是要表现在select时的作用,但是这一部分并未介绍。 我想,要想搞...
博文链接:https://shaqiang32.iteye.com/blog/201309
hibernate关系映射配置示例代码 一对多.rar,多对一或双向一对多.rar,多对一.rar,多对多.rar
hibernate各种映射关系祥解 一对一双向 一对一单向 一对多双向 一对多单向 多对一单向 多对多双向 多对多单向
NULL 博文链接:https://hi-beijing.iteye.com/blog/1315150
主要介绍了hibernate一对多(多对一)双向关联映射的用法
hibernate中的映射关系,里面包括一对多,多对一,双向一对多,一对一,多对多等关系,属于代码型应用。
http://blog.csdn.net/e421083458/article/details/8794127 该源码为Hibernate教程配套源码
NULL 博文链接:https://hw1287789687.iteye.com/blog/1950201
Hibernate表关系总结(一对一,多对一,多对多,单向,双向),有具体实例代码
hibernate的中关系映射分为一对一、一对多、多对一、多对多,其中有单双向之分。而一对一还有主键和外键区分。一共是九种。分别用xml配置文件和annotation实现。annotation的版本没有写测试程序,见谅。