1、One To One 单相

背景:

古代一个老婆  只能关联一个老公

husband.java

package com.rhythmk.model;

public class husband {

	public Integer getHusbandId() {
return husbandId;
}
public void setHusbandId(Integer husbandId) {
this.husbandId = husbandId;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
private Integer husbandId;
private String Name; }

  hasband.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.rhythmk.model">
<class name="husband" table="t_husband">
<id name="husbandId" type="int">
<column name="husbandId" />
<generator class="native" />
</id>
<property name="Name" type="string"> </property> </class>
</hibernate-mapping>

wife.java

package com.rhythmk.model;

public class wife {

	private Integer wifeId;
private String name; public Integer getWifeId() {
return wifeId;
} public void setWifeId(Integer wifeId) {
this.wifeId = wifeId;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public husband getHb() {
return hb;
} public void setHb(husband hb) {
this.hb = hb;
} private husband hb; @Override
public String toString() {
return "wife [wifeId=" + wifeId + ", name=" + name + ", hb=" + hb + "]";
} }

  wife.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.rhythmk.model">
<class name="wife" table="t_wife">
<id name="wifeId" type="int">
<column name="wifeId" />
<generator class="native" />
</id>
<property name="Name" type="string">
</property>
<!-- one to one 类似于 one to many 只需要添加 unique =true 即可 -->
<many-to-one name="hb" column="husbandId" ></many-to-one>
</class>
</hibernate-mapping>

注意:

  one to one 类似于 one to many 只需要添加 unique =true 即可

 2、One To One 双向

跟单相查不多  就是两边都配上  many to one

调整 hasband.hbm.xml 添加:

      <!--   one  to  one 类似于  one to many   只需要添加 unique =true 即可 -->
<many-to-one name="mywife" column="wifeId" ></many-to-one>

调整 husband.java :

	public wife getMywife() {
return mywife;
}
public void setMywife(wife mywife) {
this.mywife = mywife;
}
private wife mywife;

  测试:

	@Test
public void test02_add() {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction(); husband hb = new husband();
hb.setName("王大1");
wife w = new wife();
w.setName("张妞 2");
w.setHb(hb);
hb.setMywife(w);
session.save(hb);
session.save(w);
System.out.println(w.toString());
session.getTransaction().commit(); } catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null)
session.close();
}
}

  输出:

Hibernate: insert into t_husband (Name, wifeId) values (?, ?)
Hibernate: insert into t_wife (Name, husbandId) values (?, ?)
wife [wifeId=6, name=张妞 2, hb=com.rhythmk.model.husband@8b677f]
Hibernate: update t_husband set Name=?, wifeId=? where husbandId=?

代码下载地址:

http://pan.baidu.com/s/1gdFt7ur

Rhythmk 学习 Hibernate 06 - Hibernate 表间关系 [One To One]的更多相关文章

  1. Hibernate第三天——表间关系与级联操作

    第三天,我们来使用Hibernate进行表之间一对多 多对多关系的操作: 这里我们先利用两个例子进行表关系的回顾: 一对多(重点): 例如分类和商品的关系,一个分类多个商品,一个商品属于一个分类 CR ...

  2. EF简易教程,从建表到表间关系

    唐大兵博客 唐大兵的博客里记录了EF Code First从建表到表之间关系的详细内容. 汪杰的博客(EF里一对一.一对多.多对多关系的配置和级联删除) 汪杰的博客更简洁,但不够充实,读懂了唐大兵博客 ...

  3. Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]

    1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java package com.rhythmk.model; import java.util.Date; ...

  4. Node.js ORM框架Sequlize之表间关系

    Sequelize模型之间存在关联关系,这些关系代表了数据库中对应表之间的主/外键关系.基于模型关系可以实现关联表之间的连接查询.更新.删除等操作.本文将通过一个示例,介绍模型的定义,创建模型关联关系 ...

  5. 自增特性,外键,级联更新与级联删除,表间关系,SELECT用法,GROUP BY

    自增特性 自动增长的作用: 问题:为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败. 如何解决:为主键生成自动增长的值. 自动增长的语法: 字段名 数据类型 AUTO_INCR ...

  6. MicroERP开发技术分享:vsFlexGrid、scriptControl实现工资表自定义列与表间关系计算

    开发大型的MIS系统,肯定是离不开第三方控件的,同时也要根据项目需要自己写几个. MicroERP共用了以下几个控件: 第三方商业控件: vsFlexGrid:大名鼎鼎的表格控件,不用多说,配合vsP ...

  7. 【jQuery基础学习】06 jQuery表单验证插件-Validation

    jQuery的基础部分前面都讲完了,那么就看插件了. 关于jQuery表单验证插件-Validation validation特点: 内置验证规则:拥有必填.数字.E-Mail.URL和信用卡号码等1 ...

  8. Django 的ORM 表间操作

    Django之ORM表间操作   之前完成了简单的数据库数据增加操作.这次学习更多的表间操作. 单表操作 增加 方式一 b = Book(title="Python基础", pub ...

  9. sql语句之表间字段值复制遇到的一些问题--基于mysql

    好久没来园子了,转眼2017已经到3月份了,前段时间一直忙没时间写博客(其实是自己懒),感觉内心好惭愧.昨天临下班前,技术老大突然对我说要改下表结构,问我能不能实现将一个表的字段值复制到另外一个表的某 ...

随机推荐

  1. hdu4686矩阵快速幂

    花了一个多小时终于ac了,有时候真的是需要冷静一下重新打一遍才行. 这题就是 |aod(n)|   =    |1        ax*bx       ax*by      ay*bx       ...

  2. ISE创建Microblaze软核(三)

    第七步 进入SDK开发环境 编译完成后弹出如下对话框,选择SDK的工作目录.在MicroblazeTutor中创建一个Workspace文件夹,并选择该文件夹为SDK的工作目录. 进入SDK主界面. ...

  3. Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本

     Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本 文章编号 : 38783 软件: ArcGIS - ArcEditor 10 ArcGIS - ArcInfo 10 A ...

  4. mongodb配置数据库文件夹,创建服务

    配置步骤 1.新建data文件夹,并在data下创建db及log文件夹 2.在mongodb安装目录下新增mongod.cfg文件,配置如下 systemLog:    destination: fi ...

  5. (转) 一致性Hash算法在Memcached中的应用

    前言 大家应该都知道Memcached要想实现分布式只能在客户端来完成,目前比较流行的是通过一致性hash算法来实现.常规的方法是将 server的hash值与server的总台数进行求余,即hash ...

  6. Swapping eth0 and eth1 on OK335xS board

    /******************************************************************************* * Swapping eth0 and ...

  7. BZOJ4977: [[Lydsy1708月赛]跳伞求生(不错的贪心)

    4977: [[Lydsy1708月赛]跳伞求生 Time Limit: 5 Sec  Memory Limit: 256 MBSubmit: 446  Solved: 142[Submit][Sta ...

  8. Java之DelayQueue实际应用

    在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其 中的对象只能在其到期时才能从队列中取走 ...

  9. std::function与std::bind 函数指针

    function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时. std::function可以绑定到全局函数/类静态成员 ...

  10. .NET委托解析(异步委托)

    上一篇我们了解到了,委托的基本感念,列举了几个委托的实例,并根据实例来反编译源码查看.NET 委托的内部实现,从浅入深的角度来详细的去解析委托的实质,本文将系上篇继续讨论异步委托的实现以及异步委托的源 ...