1.需求

  用户和身份证是一一对应的关系。

  有两种对应方式:

    用户id作为身份证表的外键,身份证号作为主键;

    用户id作为身份证表的主键;

2.实体Bean设计

  User:

public class User {private int userId;private String userName;private IDCard idCard;set...get...
}

  IDCard(用户id作为外键):

public class IDCard {private String cardNum;private String place;private User user;set...get...
}

  IDCard(用户id作为主键):

public class IDCard {//必须有此属性作为主键private int userId;private String cardNum;private String place;private User user;set...get...
}

3.配置映射文件

  user.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.juaner.hibernate.idcard"><class name="User" table="t_usercard"><id name="userId" column="u_id"><generator class="native"/></id><property name="userName" column="u_name"/><!--一对一映射--><one-to-one name="idCard" class="IDCard"/></class></hibernate-mapping>

  用户id作为外键:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.juaner.hibernate.idcard"><class name="IDCard" table="t_idcard" ><id name="cardNum"><!--允许赋值--><generator class="assigned"/></id><property name="place"/><!--一对一映射,有外键而且唯一--><many-to-one name="user" class="User" column="user_id" cascade="save-update" unique="true" /></class></hibernate-mapping>

  用户id作为主键:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.juaner.hibernate.idcard"><class name="IDCard" table="t_idcard" ><id name="userId"><!--主键生成方式是foreign,即把别的表的主键作为当前表的主键property指定引用的对象,根据对象可以找到对象的类及映射文件,从而找到表的主键--><generator class="foreign"><param name="property">user</param></generator></id><property name="cardNum"/><property name="place"/><!--基于主键的映射constraint=true指定在主键上添加外键约束--><one-to-one name="user"  class="User" constrained="true" cascade="save-update"  /></class></hibernate-mapping>

转载于:https://www.cnblogs.com/juaner767/p/5567514.html

Hibernate中的一对一映射相关推荐

  1. Hibernate中的实体映射

    一.一对一映射  如人(Person)与身份证(IdCard) 的关系,即为一对一的关系,一个人只能有一张身份证,一张身份证只能属于某一个人,它们的关系图如下图所示: 在Person实体中添加一个属性 ...

  2. Hibernate中使用未映射为主键的“id”字段进行查询的场景分析

    今天遇到一个hibernate的问题,有一个实体的主键字段叫userId,数据库里的字段名称是user_id. 然后在某个查询语句里有这样一段代码: Criterion criterion = Res ...

  3. mysql hibernate mediumtext_mysql中的text,mediumtext,longtext在Hibernate中的类型映射

    (摘自http://congpeixue.iteye.com/blog/283402) 在Hibernate的配置中,我目前是采用Annotation的方式,不过原理应该都一样. 对于如下的属性: J ...

  4. JPA 中 one-toone 一对一 映射

    用户信息表: User @Entity @Table(name="users") @Cache(usage=CacheConcurrencyStrategy.READ_ONLY) ...

  5. Hibernate一对一映射示例注释

    Hibernate一对一映射示例注释 今天我们将研究Hibernate中的一对一映射.我们将使用Annotation和XML配置来研究Hibernate One To One Mapping示例. 目 ...

  6. hibernate注释映射_Hibernate一对一映射示例注释

    hibernate注释映射 Today we will look into One to One Mapping in Hibernate. We will look into Hibernate O ...

  7. 双向关联一对一映射详解(2)

    二.双向外键关联 双向的外键关联可以理解为外键关联的一种特殊情况,这种特殊主要是由于它是一种双向的对应关系,在前篇文章中提到如果想要在一张表中添加一个外键字段的话可以使用<many-to-one ...

  8. hibernate中一对一关系映射

    这篇文章讲述的是hibernate中一对一关系映射,如有错误或者不当之处还望各位大神批评指正. 一对一映射(外键关联) 目标 假设一个人对应养一只狗,一只狗只能由一个人来养,完成一对一相关操作. 类编 ...

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

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

最新文章

  1. mac文件夹中如何给文件重命名,快捷键是什么
  2. 【struts2+hibernate+spring项目实战】统一异常处理(ssh)
  3. 力扣【下一个更大元素】leetcode-503.下一个更大元素 Ⅱ:单调栈解法+循环数组解法
  4. There is no public key available for the following key IDs: 3B4FE6ACC0B21F32
  5. 修改WordPress中上传附件2M大小限制的方法
  6. Linux第三方软件仓库
  7. HDU2066一个人的旅行(dijkstra)
  8. AbstractQueuedSynchronizer源码分析
  9. 移远 NB-IOT_BC95_AT命令集
  10. 计算机控制键功能,电脑ctrl键的作用大全
  11. lcs问题java_动态规划法(十)最长公共子序列(LCS)问题
  12. 蓝牙文件传输之obex层之上的分析【Android源码解析】
  13. OA新增百亿市场,蓝凌、钉钉靠“智能OA”占稳C位
  14. Go Slice实现原理分析
  15. 【杂谈】当你在凝视深渊的时候,深渊也正在凝视着你
  16. 加壳软件测试,VMProtect2.04加壳程序从入门到精通
  17. MATLAB下载支持包时出现问题
  18. 计算机系统集成能够承接哪些,系统集成资质承接范围
  19. 健康和食品行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  20. 05-如何选购电脑主板?小白装机简单易懂的电脑主板选购知识指南

热门文章

  1. 用VB产生随机任意大小文件挤满硬盘
  2. CNCC2018 即将开幕,报名优惠截止倒计时5天!
  3. 国防科大登顶SQuAD 2.0排行榜,机器阅读也要“不知为不知”
  4. 多乐融依托大数据锻造五重风控防线
  5. 利用更改Windows7粘滞键漏洞破解登录密码
  6. 轻松scrum之旅 思维导图读书笔记
  7. JavaScript 中的函数式编程实践
  8. JavaScript 作用域不完全指北
  9. 生成网上下载的EF项目对应的数据库
  10. 学习和考取HCIE的普遍经典过程,你肯定是遇到了其中的某些问题?这里有你要的答案...