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>

Hibernate中的一对一映射的更多相关文章

  1. Hibernate中的一对一映射关系

    Hibernate中的一对一映射关系有两种实现方法(单向一对一,和双向一对一)(一对一关系:例如一个department只能有一个manager) 单向和双向有什么区别呢??例如若是单向一对一,比如在 ...

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

    很抱歉.有两天没更新博客文章,不要写文章一天真的感觉很是空的啊.制定一个写作习惯,想改也改不掉啊.说点题外话,前两天我收到一封私人信件给朋友,我写邀请函的文章OWS文章.一种技术用于研究图标工具,这位 ...

  3. Hibernate中的一对一关联和组件的映射

    Hibernate提供了两种映射一对一映射关联关系的方式: 01.按照外键映射 02.按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这 ...

  4. Hibernate中的一对一关联

    Hibernate提供了两种一对一映射关联关系的方式: 1)按照外键映射 2)按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映 ...

  5. 【Hibernate 3】一对一映射配置

    一.一对一映射简介 一对一关联映射有两种实现策略: 第一种:主键关联,即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联 ...

  6. Hibernate总结(二)---hibernate中的各种映射

    知识的准备: (参考:汤阳光Hibernate3.6(基础)) 一.浅谈javaBean之间的关系 存在的关系: 1.关联(一对一.一对多.多对一.多对多) 2.聚合/组合(最后考虑) 3.继承 所以 ...

  7. Hibernate中的实体映射

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

  8. Hibernate中的一对一关系详解(1)

    A:先讲讲一对一的关系(欲知其他关系,请看下篇) a:主键关联的一对一关系 一对一关系一般用主键关联,也就是说用主键值来维护两者的关系,一个表的主键存放另一个表的主键值.例如在员工与帐号中,我们取员工 ...

  9. Hibernate中的继承映射

    1.继承映射 继承映射分为两种情况:简单继承映射和继承映射. 在简单继承映射中,每个子类都要写一个映射文件. 在继承映射中,只使用一个映射文件.继承映射分为三种情况: 所有子类映射到一张表 需要使用鉴 ...

随机推荐

  1. iOS开发之Xcode6 之手动添加Pch预编译文件

    参考文档 http://blog.csdn.net/crazyzhang1990/article/details/44243343 红色部分为本人自己补充注意事项 在Xcode6之前,创建一个新工程x ...

  2. 键盘控制div移动

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...

  3. Android面试题整理【转载】

      面试宝典(5)  http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...

  4. HttpURLConnection请求接口

    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataOutputStream; ...

  5. Win7/8下提示OpenSCManager failed 拒绝访问

    在我们日常使用命令行安装一些工具的时候经常提示如下错误提示,这是上市Win7或者Win8操作系统权限的原因 工具/原料   Win7,Win8操作系统 方法/步骤   1 以Win8为例,按WIN+Q ...

  6. final运用于内部类访问局部变量

    final运用于内部类访问局部变量 public void mRun( final String name){ new Runnable() { @Override public void run() ...

  7. Kafka消息保证不丢失和重复消费问题

    使用同步模式的时候,有3种状态保证消息被安全生产,在配置为1(只保证写入leader成功)的话,如果刚好leader partition挂了,数据就会丢失.还有一种情况可能会丢失消息,就是使用异步模式 ...

  8. mysql 保留两位小数

    mysql保留字段小数点后两位小数用函数:truncate(s.price,2)即可.如果想用四舍五入的话用round(s.price,2).  

  9. [转载]findContours函数参数说明及相关函数

    原文地址:findContours函数参数说明及相关函数作者:鸳都学童 findContours函数,这个函数的原型为: void findContours(InputOutputArray imag ...

  10. 理解Cookie和Session机制

    转载: 理解Cookie和Session机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录 ...