多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一

一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多

也就是说一对多和多对一的映射策略是一样的,只是站的角度不同

1.多对一(下面示例人员表(Info),民族表(Nation))  多个人员对应一个民族。要知道,人员表中的外键列nation是对应民族表的主键列code。所以要在Info.hbm.xml中配置nation外键指向民族表。(如下图所示)

一般需要加上cascade="save-update",加这个配置业属性目的是,many表和one表一起更新

2.一对多(下面以人员表(Info)和工作简历(Work)表为例)每个人员对应个工作简历。

首先需要在Info的实体类中加入一个Set<Work> 类型的字段。

然后再Info.hbm.xml中配置一对多。(如下图所示)

<set name="实体类中集合成员的变量名(works)">
<one-to-many class="Work表">
<key><column name="InfoCode" ></colum></key>
</set>

 3.一对一(人员表与密码表)每个人对应相应的用户密码:(因为外键值设置在login表上,所以在login.hbm.xml中配置信息)

4.多对多

数据库中没有多对多的关系。只有程序里面有。数据库中是使用两个一对多和多对一来实现多对多的。典型的是:中间表
在程序中,如果中间表中没有其它信息,那就可以不用写中间表的实体类。
多对多,还可以用在:用户和角色的关系上。
1.给类加关联对象(集合对象)
2.给hbm.xml配置

<set name="当前类的集合属性" table="中间表">
<key column="中间表中与此表对应的外键"></key>
<many-to-many class="另外多方对象的类名" column="另外多方对象在中间表中的外键"></many-to-many>
</set><set name="courses" table="score">
<key column="sno"></key>
<many-to-many class="Course" column="cno"></many-to-many>
</set>

 (双向)

双向多对一关联 是最常见的关联关系。(这也是标准的父/子关联关系。)

<class name="Person"><id name="id" column="personId"><generator class="native"/></id><many-to-one name="address" column="addressId"not-null="true"/>
</class><class name="Address"><id name="id" column="addressId"><generator class="native"/></id><set name="people" inverse="true"><key column="addressId"/><one-to-many class="Person"/></set>
</class>

基于外键关联的双向一对一关联也很常见。

<class name="Person"><id name="id" column="personId"><generator class="native"/></id><many-to-one name="address" column="addressId" unique="true"not-null="true"/>
</class><class name="Address"><id name="id" column="addressId"><generator class="native"/></id><one-to-one name="person" property-ref="address"/>
</class>

转载于:https://www.cnblogs.com/dnf1612/p/6541006.html

hibernate映射(单向双向的一对多、多对一以及一对一、多对一(转)相关推荐

  1. hibernate映射-单向n-n关联关系

    (学习记录,错误不足之处,请您耐心指正^_^) hibernate映射-多对多关联关系 n-n关联必须使用连接表才能完成, 一.代码示例: {类文件↓} Category.class 1 packag ...

  2. hibernate映射一对多双向关联关系实例

    在电子商务应用中,经常会有这样的需求:根据给定的客户,得到该客户的所有订单:根据给定的订单,得到该订单的所属客户.对于这种双向关联的情况,在Hibernate应用中,也有人叫多对一双向关联,只是叫法不 ...

  3. 【SSH系列】Hibernate映射 -- 一对多关联映射

         映射原理        一对多关联映射和多对一关联映射的映射原理是一样一样的,所以说嘛,知识都是相通的,一通百通,为什么说一对多关联映射和多对一关联映射是一样的呢?因为她们都是在多的一端加入 ...

  4. hibernate关联映射:多对一、一对一

    配置对象关联关系 - 单向一对多关系 - 例如:班级与学生 Grade类中 public class Grade{private int gid;private String gname;privat ...

  5. 步步为营Hibernate全攻略(三)剪不断理还乱之:多对多关联映射

    hibernate多对多关联映射同样可以分为单向的关联映射和双向的关联映射,与一对多关联映射相比,双方之间的关系将不再由其中多的一方维护而是变成了由第三张表来维护.第三张表的出现不仅减少了两张表中的数 ...

  6. 【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,采用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  7. 【Hibernate步步为营】--双向关联一对一映射具体解释(一)

    一对一的映射在对象模型中是常常见到的,为了将对象模型转换为关系模型就必须在映射文件里进行配置,上篇文章讨论了一对一映射的单向关联的情况,重点是<one-to-one>标签的使用,须要在映射 ...

  8. JPA(五):映射关联关系------映射单向多对一的关联关系

    映射单向多对一的关联关系 新建Customer.java: package com.dx.jpa.singlemanytoone;import java.util.Date;import javax. ...

  9. 数据库关联映射建表图示(一对多、多对多)

    数据库关联映射建表图示(一对多.多对多) ~总结一下数据库的 一对多.多对一.一对一.多对多 关系 以及对应的建表方式~ 关联映射:一对多/多对一 存在最普遍的映射关系,简单来讲就如球员与球队的关系: ...

最新文章

  1. python27安装-linux安装python2.7
  2. 李沐《动手学深度学习》PyTorch 实现版开源,瞬间登上 GitHub 热榜!
  3. 深度学习(10)-- Capsules Networks(CapsNet)
  4. Qt工作笔记-Qt文档阅读笔记-qualifiedName()的官方解析及XML使用名称空间
  5. SpringMVC学习一
  6. 小米MIX 4屏幕规格曝光:华星光电1080P面板 或支持屏下摄像
  7. ubuntu软件源更换方法
  8. @程序员,入门爬虫看这一篇就够了!
  9. java三种经典的比对方法_几种任务调度的 Java 实现方法与比较
  10. oracle if 语句的使用
  11. 第58章、拍照功能实现(从零开始学Android)
  12. 三菱驱动器参数表_三菱伺服驱动器参数都设置什么啊 详细点 谢谢
  13. 【机器学习】朴素贝叶斯对文本分类--对人名国别分类
  14. gcc10环境下bwa安装报错的解决方案
  15. 关于ARM公司的cortex系列
  16. 《Java程序设计》公选课学习指南
  17. python控制小爱同学_神秘鸭,用Siri小爱同学语音助手控制你的电脑
  18. 前端实现实时消息提醒消息通知
  19. python 解析 xml字符串
  20. Caliburn.Micro简介

热门文章

  1. Java开发自学技巧!【漫画(1)
  2. Android移动开发之【通往安卓的神奇之旅】Senior VIew高级组件与onClickListener()再探索
  3. python【力扣LeetCode算法题库】4- 寻找两个有序数组的中位数
  4. HTML语言基础.上
  5. 基础练习 FJ的字符串
  6. 想做网络推广浅析网站优化中标题该如何设置?
  7. 如何提升网站的信任度,助力网站获取高排名?
  8. 浅析企业自助建站系统的特性
  9. linux利用vi挂载磁盘,如何在linux环境上挂载磁盘
  10. oracle同时更新多列数据,ORACLE 11G 表联合更新多列