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>

最新文章

  1. Java NIO2:缓冲区
  2. Sql Server中不常用的表运算符之APPLY(2)
  3. CentOS系统在不重启的情况下为虚拟机添加新硬盘
  4. iOS学习30之UITableView编辑
  5. 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩
  6. C语言 文件操作1--二进制文件与文本文件
  7. 20145215《Java程序设计》实验一实验报告
  8. Android 操作系统的内存回收机制
  9. 【HTML5 4】《HTML5与CSS3权威指南》 step1 导读
  10. C++出现计算机术语5
  11. 有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果(转)
  12. JDK源码中,都有哪些NB的设计模式?
  13. Associative Containers
  14. [No0000D7]img生成器.bat合并所有图片到html网页中
  15. hdu1238 kmp
  16. CentOS 7 安装MySQL 8.0.11
  17. LNMP下FTP服务器Pureftpd的安装和使用
  18. 关于@synchronized 比你想知道的还多
  19. goland实现函数式链式编程
  20. 20155306 《信息安全技术概论》实验二 Windows口令破解

热门文章

  1. Android应用Design Support Library完全使用实例
  2. Js_动画显示背景图片
  3. vsphere vcenter 添加域管理员
  4. 关于智能指针boost::shared_ptr
  5. 设置DIV最小高度以及高度自适应随着内容的变化而变化
  6. 安装Ubuntu Linux系统时硬盘分区最合理的方法
  7. hdu---(3555)Bomb(数位dp(入门))
  8. (转)codeblock(常用快键)
  9. Best Time to Buy and Sell Stock II [LeetCode]
  10. IO流 总结二