Hibernate中的一对一映射
2024-09-21 15:16:32
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>
最新文章
- Java NIO2:缓冲区
- Sql Server中不常用的表运算符之APPLY(2)
- CentOS系统在不重启的情况下为虚拟机添加新硬盘
- iOS学习30之UITableView编辑
- 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩
- C语言 文件操作1--二进制文件与文本文件
- 20145215《Java程序设计》实验一实验报告
- Android 操作系统的内存回收机制
- 【HTML5 4】《HTML5与CSS3权威指南》 step1 导读
- C++出现计算机术语5
- 有一个很大的整数list,需要求这个list中所有整数的和,写一个可以充分利用多核CPU的代码,来计算结果(转)
- JDK源码中,都有哪些NB的设计模式?
- Associative Containers
- [No0000D7]img生成器.bat合并所有图片到html网页中
- hdu1238 kmp
- CentOS 7 安装MySQL 8.0.11
- LNMP下FTP服务器Pureftpd的安装和使用
- 关于@synchronized 比你想知道的还多
- goland实现函数式链式编程
- 20155306 《信息安全技术概论》实验二 Windows口令破解
热门文章
- Android应用Design Support Library完全使用实例
- Js_动画显示背景图片
- vsphere vcenter 添加域管理员
- 关于智能指针boost::shared_ptr
- 设置DIV最小高度以及高度自适应随着内容的变化而变化
- 安装Ubuntu Linux系统时硬盘分区最合理的方法
- hdu---(3555)Bomb(数位dp(入门))
- (转)codeblock(常用快键)
- Best Time to Buy and Sell Stock II [LeetCode]
- IO流 总结二